根据R

时间:2015-12-19 22:57:48

标签: r

我有一个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
...

这是一个痛苦的屁股。

谢谢,

1 个答案:

答案 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