我有一个data.frame
,其列的值介于3到18之间。我要做的是创建一个值为4到14的新列。我想将数据滚动到以下方式:
lace$New.Lace[lace$TOTAL.LACE == 3] <- 4
lace$New.Lace[lace$TOTAL.LACE >= 14] <- 13
我希望lace$New.Lace
lace$TOTAL.LACE
等于lace$TOTAL.LACE > 4 && lace$TOTAL.LACE < 13] <- lace$TOTAL.LACE
我尝试了以下操作:
lace$New.Lace[lace$TOTAL.LACE > 4 && lace$TOTAL.LACE < 13] <- lace$TOTAL.LACE
这最终只会使lace$New.Lace
等于lace$TOTAL.LACE
,因此矢量会变得相同。
我该怎么写这个?我刚刚将指令写成:
lace$New.Lace[lace$TOTAL.LACE == 4] <- 4
lace$New.Lace[lace$TOTAL.LACE == 5] <- 5
...
这是一个痛苦的屁股。
谢谢,
答案 0 :(得分:1)
在这种情况下,您可以迭代TOTAL.Lace值并根据您的条件将值分配给New.Lace。就像在这个例子中一样:
tl = 18:3
df = data.frame(tl)
df$nl = df$tl
for (i in 1:length(df$tl)) {
if (df$tl[i] <= 4) {
df$nl[i] = 4
} else if (df$tl[i] >= 14) {
df$nl[i] = 13
}
}
我使用了你原来的条件:
lace$New.Lace[lace$TOTAL.LACE >= 14] <- 13
然而它似乎应该是<- 14
。