我的data.frame d
如下所示:https://i.stack.imgur.com/f1LJn.jpg
如果我执行以下操作:d <- d %>%
mutate(reporter=ifelse(value_ex>0, report_ctry, partner_ctry))
新创建的变量不包含&#34; DE&#34;并且&#34; FR&#34;,但是10和16.显然,问题是变量是数字而不是因素。什么是最简单的方法告诉R新创建的变量应该是一个因素而不是数字?
答案 0 :(得分:1)
正如@Jonathan Hill所提到的,条件格式返回级别而不是字符值。为as.character
和report_ctry
插入partner_ctry
将返回字符值。
df %>% mutate(reporter=ifelse(value_ex>0, as.character(report_ctry), as.character(partner_ctry)))
head(df2)
report_ctry partner_ctry value_ex reporter
1 DE FR 30.26170 DE
2 DE FR 20.01426 DE
3 DE FR 33.28977 DE
4 DE FR 38.37996 DE
5 DE FR 0.00000 FR
6 DE FR 19.72538 DE
生成数据框如下:
df <- data.frame(report_ctry=c(rep("DE", 10), rep("FR", 10)),
partner_ctry = c(rep("FR",10), rep("DE", 10)),
value_ex = runif(20, min=0, max=50))
df$value_ex[5] <- 0
答案 1 :(得分:1)
ifelse
在许多情况下不保留类型。使用来自dplyr的if_else
,它有更多限制,但在大多数情况下都有效。 @Adam Quek使用的数据
d <- df %>%
mutate(reporter=if_else(value_ex>0, report_ctry, partner_ctry))