我很难解决一些简单的事情。
我正在尝试根据与第二个表匹配的特定列替换值。
我可以使用replace在同一个表中创建条件,例如:
data <- mtcars %>% mutate(mpg = replace(mpg, cyl == 4, NA))
但我需要根据第二张表进行变异和替换,因为他们有一个匹配的表。 考虑我有一个名为color的第二个表。 我想将mtcars $颜色替换为true或false,基于mtcars $ cyl存在于颜色$ cyl。
cyl color
4 blue
6 green
8 yellow
1 red
2 black
3 purple
data <- mtcars %>% mutate(color = replace(color, cyl == color$cyl, TRUE))
可以使用mutate和replace,或者我需要使用匹配 或其他功能? 谢谢你的帮助。
答案 0 :(得分:2)
您无法使用替换,因为color
中尚不存在列mtcars
。 (这与您使用mpg
的第一个示例不同,后者是现有列。)
此外,cyl == color$cly
不是正确的测试,因为它是用于元素比较的。如果我理解正确,您需要检查mtcars$cyl
的每个值,并在color$cyl
中显示 的值。您可以将%in%
用于此目的。
以下两行将color
列添加到包含TRUE
的mtcars,其中cyl
的值也可以在color$cyl
中找到。碰巧的是,所有行都是如此。
data <- mtcars %>%
mutate(color = cyl %in% color$cyl)
head(data)
## mpg cyl disp hp drat wt qsec vs am gear carb color
## 1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 TRUE
## 2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 TRUE
## 3 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 TRUE
## 4 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 TRUE
## 5 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 TRUE
## 6 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 TRUE