我有一些数据。我想添加一个列,但不是常规方式。
data <- data.frame(month_num = 1:12, month_name = month.abb)
data
month_num month_name
1 1 Jan
2 2 Feb
3 3 Mar
4 4 Apr
5 5 May
6 6 Jun
7 7 Jul
8 8 Aug
9 9 Sep
10 10 Oct
11 11 Nov
12 12 Dec
现在,我想为此数据添加第三列。例如,我想让以下向量成为data
中的一列:
sentiment = c(rep("cold", 3), rep("hot", 6), rep("cold", 3)
我通常会做的(在baseR中)是以下之一:
$
添加它
data$sentiment <- sentiment
data[,3] <- sentiment
data.frame(month_num = 1:12, month_name = month.abb, sentiment = sentiment)
是的,data.table
在其参考语义中也做得很好。
data <- data.table(month_num = 1:12, month_name = month.abb)
data[,`:=`(sentiment = sentiment)]
data
month_num month_name sentiment
1: 1 Jan cold
2: 2 Feb cold
3: 3 Mar cold
4: 4 Apr hot
5: 5 May hot
6: 6 Jun hot
7: 7 Jul hot
8: 8 Aug hot
9: 9 Sep hot
10: 10 Oct cold
11: 11 Nov cold
12: 12 Dec cold
但是,我不想以这种方式添加它。我想使用dplyr相关函数来完成这项任务。 dplyr
中是否有任何函数可以让我执行列创建任务?
注意:mutate()
不起作用! (或者我现在知道)。
data%>%
mutate(sentiment = sentiment)
month_num month_name V3 sentiment
1 1 Jan cold cold
2 2 Feb cold cold
3 3 Mar cold cold
4 4 Apr hot hot
5 5 May hot hot
6 6 Jun hot hot
7 7 Jul hot hot
8 8 Aug hot hot
9 9 Sep hot hot
10 10 Oct cold cold
11 11 Nov cold cold
12 12 Dec cold cold
正如您所看到的那样,该列是重复的,我不确定为什么会发生这种情况。也许它与sentiment
中唯一值的数量有关?
总而言之,有没有办法在dplyr中使用mutate()
或其他相关功能实现这一目标?
我知道最简单的方法是使用函数qazxsw poi:
case_when