我有一个数据帧(dat_gs2),它是12行乘17列。我希望遍历两列中的每一行,并使用它们来计算第三列的值。我用下面的代码面临的问题是关键字“ in”被标记为“意外的令牌输入”。如果我尝试运行此代码块,则会收到以下错误。我不确定是什么问题。任何帮助表示赞赏
“
[.data.frame
(dat_qs2,i,11)出错:找不到对象'i'”
LoopIters<-1:12
i=1
For (i in seq_along(LoopIters))
{
if ((dat_qs2[i,11]/dat_qs2[i,13])<.25)
{
dat_qs2[i,14]<-"Low"
next
}
else if((dat_qs2[i,11]/dat_qs2[i,13])<.75)
{
dat_qs2[i,14]<-"Medium"
next
}
else if((dat_qs2[i,11]/dat_qs2[i,13])>=.75)
{
dat_qs2[i,14]<-"High"
next
}
}
答案 0 :(得分:1)
这里没有循环:
dat_qs2[ ,14] <- ifelse(dat_qs2[,11]/dat_qs2[,13]<.25, "Low",
ifelse(dat_qs2[,11]/dat_qs2[,13]<.75, "Medium",
"High"))
答案 1 :(得分:0)
这应该达到相同的结果。在没有看到实际数据的情况下,我假设您的数据框中的列名称。
library("tidyverse") # or library("dplyr")
dat_result <-
dat_qs2 %>%
mutate(newcolumn = ifelse(columnName11 / columnName13 < 0.75, "Medium", "High")
, newcolumn = ifelse(columnName11 / columnName13 < 0.25, "Low", newcolumn)