如何在 R 中使用 if then 语句创建一个基于另一个变量的新变量
How to use an if then statement in R to create a new variable based on another
我有一个包含 Column1 的数据框,它可以取字母表中任何字母的值。我想创建第二列来拼出与该字母对应的数字。我正在尝试使用 if then 语句来执行此操作......但不断出现错误。抱歉,这是一个简单的问题,但我已经尝试了 R for dummies 网站 http://www.dummies.com/how-to/content/how-to-use-if-statements-in-r.html 但没有成功!
x$Column2 <- NULL
如果 (x$Column1 == "A") 那么 [x$Column2 <- "One"]
最好的方法是创建一个引用 table:
>Reference = data.frame(Number = c("One", "Two", "Three", "Four"), Letter = c("A", "B", "C", "D"))
> Reference
Number Letter
1 One A
2 Two B
3 Three C
4 Four D
> Data = data.frame(Letter = c("B", "B", "C", "A", "D"))
> Data
Letter
1 B
2 B
3 C
4 A
5 D
然后你可以找到索引:
> Indices = sapply(Data$Letter, function(x) which(x == Reference$Letter))
> Indices
[1] 2 2 3 1 4
并使用它们创建列
> Data$Number = Reference[Indices,]$Number
> Data
Letter Number
1 B Two
2 B Two
3 C Three
4 A One
5 D Four
以我的理解,这就像创建一个虚拟变量,你想在这里做什么。尝试
> x$dummy <- as.numeric(Column1 != "A")
所有 A 都应该得到 0,其他值应该得到 1。
查看 Generate a dummy-variable 了解更多信息。
我有一个包含 Column1 的数据框,它可以取字母表中任何字母的值。我想创建第二列来拼出与该字母对应的数字。我正在尝试使用 if then 语句来执行此操作......但不断出现错误。抱歉,这是一个简单的问题,但我已经尝试了 R for dummies 网站 http://www.dummies.com/how-to/content/how-to-use-if-statements-in-r.html 但没有成功!
x$Column2 <- NULL 如果 (x$Column1 == "A") 那么 [x$Column2 <- "One"]
最好的方法是创建一个引用 table:
>Reference = data.frame(Number = c("One", "Two", "Three", "Four"), Letter = c("A", "B", "C", "D"))
> Reference
Number Letter
1 One A
2 Two B
3 Three C
4 Four D
> Data = data.frame(Letter = c("B", "B", "C", "A", "D"))
> Data
Letter
1 B
2 B
3 C
4 A
5 D
然后你可以找到索引:
> Indices = sapply(Data$Letter, function(x) which(x == Reference$Letter))
> Indices
[1] 2 2 3 1 4
并使用它们创建列
> Data$Number = Reference[Indices,]$Number
> Data
Letter Number
1 B Two
2 B Two
3 C Three
4 A One
5 D Four
以我的理解,这就像创建一个虚拟变量,你想在这里做什么。尝试
> x$dummy <- as.numeric(Column1 != "A")
所有 A 都应该得到 0,其他值应该得到 1。
查看 Generate a dummy-variable 了解更多信息。