我有一个数据集,其变量值为1到5。 我想创建一个新列,其中值1和3变为A,2和4变为B,5变为C
data$new <- ifelse(data$value == c("1", "3"), "A",
ifelse(data$value == c("2", "4"), "B", "C"))
这适用于1,2和5.但由于某种原因,它不接受我为A和B添加多个数字。如果它是1或3,我怎么能告诉R创建A?
答案 0 :(得分:2)
我认为你应该使用operator %in%
。
它的工作原理如下:
> '5' %in% c('1', '3', '5')
[1] TRUE
> '2' %in% c('1', '3', '5')
[1] FALSE
相反,平等==
的工作原理如下:
> '2' == c('2', '4')
[1] TRUE FALSE
- 它实际输出两个布尔值的数组。并且ifelse
可能会将测试结果作为数组中的第一个。
因此,在您的示例中,它用作data$value %in% c("1", "3")
- 测试data$value
数组的每个值都在给定数组中。
PS
另请注意 - 在您的示例中,您使用字符串'1'
,'2'
等 - 检查您是否真的想要字符串,而不是numeric
s。