我想为从旧变量获得的新变量分配一个特定的值。就我而言,我有此数据表。
$ date : Date, format: "2018-01-05" "2018-01-06" "2018-01-07" ...
$ price : num 100 110 120 ...
$ Sentiment: int -2 3 0 ...
我想添加一个名为“ tot_sentiment”的新变量,如果Sentiment变量的值为负,则分配“负”值;如果Sentiment变量的值为正,则为“正”;如果Sentiment变量的值为正,则分配“中性”。情感变量的值为零。
预期输出:
$ date : Date, format: "2018-01-05" "2018-01-06" "2018-01-07" ...
$ price : num 100 110 120 ...
$ Sentiment: int -2 3 0 ...
$ tot_sentiment: char negative positive neutral ...
我尝试了以下代码:
new_dt<- dt %>% mutate(tot_sentiment = sum(Sentiment)....blablabla.....)
答案 0 :(得分:1)
可以使用ifelse
中的case_when
和dplyr
完成此操作。但是,您可以直接使用sign
并将值子集
df$tot_sentiment <- c("negative", "neutral", "positive")[sign(df$b) + 2]
df
# a b tot_sentiment
#1 a -2 negative
#2 b 0 neutral
#3 c 1 positive
#4 d 2 positive
#5 e -5 negative
数据
df <- data.frame(a = letters[1:5], b = c(-2, 0, 1, 2, -5))
答案 1 :(得分:1)
我们可以使用factor
来更改sign
ed列上的级别
df$tot_sentiment <- factor(sign(df$b), levels = -1:1,
labels = c("negative", "neutral", "positive"))
df
# a b tot_sentiment
#1 a -2 negative
#2 b 0 neutral
#3 c 1 positive
#4 d 2 positive
#5 e -5 negative
df <- data.frame(a = letters[1:5], b = c(-2, 0, 1, 2, -5))