【发布时间】:2021-12-20 20:37:25
【问题描述】:
我正在处理 ToothGrowth 数据:
library(datasets)
data(ToothGrowth)
这里我有三列,长度、补充和剂量。我想添加第四列,其中包含取决于剂量量的分类变量,例如,如果剂量 = 0.5,则为“D5”,如果剂量 = 1,则为“D1”,我尝试了以下操作:
data(ToothGrowth)
df_TD <- ToothGrowth
dosiscatg <- NULL
for(i in 1:nrow(df_TD)) {
if df_TD$dose==0.5 {
dosiscatg <- c(dosiscatg, "D0.5")
} else if df_TD$dose==1 {
dosiscatg <- c(dosiscatg, "D1")
} else if df_TD$dose==2 {
dosiscatg <- c(dosiscatg, "D2")
}
}
但我一直收到括号“{}”的错误,我也不知道该代码是否正确。
【问题讨论】:
-
这样的事情应该在向量上作为一个整体而不是在
for循环中完成,任何推荐其他任何东西的教程要么有另一个动机(一般教授编程或展示“低效的 R是”,不是真的)或作为“R 中的良好实践”的可信度较低。您可以使用df_TD$newcol <- cut(ToothGrowth$dose, c(0, 0.9, 1.5, 3), labels = c("D5", "D1", "D2"))之类的东西;这是一个因素,所以如果你想要一个文字字符串,请用as.character(.)包装它。