1
我想添加第三列的數據框(df)取決於col.b 和行明智的比較。我希望col.c每行增加一行,除非col.b中的元素低於0.1。如果是這種情況,col.c中的值應該與col.c中的前一個值相同。行明智的比較和更新的新列
df <-structure(list(col.a = c(1, 2, 3, 4, 5, 6, 7, 8,
9, 10), col.b = c(0.176776695296637, 0.166666666666667,
0.171692917879238, 0.247435829652697, 0.0909090909090909,
0.244948974278318, 0.142857142857143, 0.072005229038445,
0.202030508910442, 0.248451997499977)), .Names = c("col.a",
"col.b"), row.names = c(NA, -10L), class = "data.frame")
> df
col.a col.b
1 0.176776695296637
2 0.166666666666667
3 0.171692917879238
4 0.247435829652697
5 0.0909090909090909
6 0.244948974278318
7 0.142857142857143
8 0.072005229038445
9 0.202030508910442
10 0.248451997499977`
所需的輸出
> df
col.a col.b col.c
1 0.176776695296637 1
2 0.166666666666667 2
3 0.171692917879238 3
4 0.247435829652697 4
5 0.0909090909090909 4
6 0.244948974278318 5
7 0.142857142857143 6
8 0.072005229038445 6
9 0.202030508910442 7
10 0.248451997499977 8
到目前爲止,我想出了一個循環哪種作品,但計數是關閉的,用於我的大數據幀時,它變得非常緩慢
for (i in 1:nrow(df)){
ifelse(df$col.b[i] >0.1 ,m <- df$col.a[i], m <-df$col.a[i-1])
df$col.c[i] <- m }
我期待更快的方式來實現這一點。