我有一个包含超过 400.000 个观察值的数据框,我试图向其中添加一列,该列的值取决于另一列,有时取决于多个列。
这是我正在尝试做的一个更简单的示例:
# Creating a data frame
M <- data.frame(c("A","B","C"),c(5,100,60))
names(M) <- c("Letter","Number")
#adding a column
M$Size <- NA
# if Number <= 50 Size is small,
# if Number is between 50 and 70, Size is Medium
# if Number is Bigger than 70, Size is Big
ifelse (M$Number <=50, M$Size <-"Small",
ifelse(M$Number <= 70,
M$Size <- "Medium",
M$Size <- "Big"
))
当我运行代码时,我得到的输出是:
[1] "Small" "Big" "Medium"
但 M 中的“Size”列始终是 ifelse 函数中的最后一个条件:
> print (M)
Letter Number Size
1 A 5 Big
2 B 100 Big
3 C 60 Big
我想要的结果:
> print (M)
Letter Number Size
1 A 5 Small
2 B 100 Big
3 C 60 Medium
我可以通过对每个条件进行子集化来解决问题subset
并使用rbind
得到我想要的结果,但代码会很长,而且由于我正在处理的原始数据帧很大,因此需要更多时间来运行。所以我想知道如何解决这个问题?