我有一个df(包含但不限于L和S列), 希望增加一列sequence值,最后形成这样的结果:
L S seq
aaaa bbbbb 1
aaaa bbbbb 1
aaaa bbbbb 1
aaaa bbbbb 1
aaaa bbbbb 1
aaaa bbbbb 1
aaaa bbbbb 1
aaaa bbbbb 1
aaaa bbbbb 1
cccc ddddd 2
cccc ddddd 2
cccc ddddd 2
cccc ddddd 2
cccc ddddd 2
cccc ddddd 2
cccc ddddd 2
cccc ddddd 2
cccc ddddd 2
我使用下述循环达到了上述效果, 但是数据量大的情况下,无法跑出,请教有没有更效率的实现方式。谢谢!
j = 1
for (i in 1:dim(df)[1]) {
if (i==1) {
df$rank <- 1
}
else {
if (df[i-1, "L"]==df[i, "L"] && df[i-1, "S"]==df[i, "S"]) {
df$rank <- j
}
else {
df$rank <- j +1
j = j +1
}
}
}
L S seq
aaaa bbbbb 1
aaaa bbbbb 1
aaaa bbbbb 1
aaaa bbbbb 1
aaaa bbbbb 1
aaaa bbbbb 1
aaaa bbbbb 1
aaaa bbbbb 1
aaaa bbbbb 1
cccc ddddd 2
cccc ddddd 2
cccc ddddd 2
cccc ddddd 2
cccc ddddd 2
cccc ddddd 2
cccc ddddd 2
cccc ddddd 2
cccc ddddd 2
我使用下述循环达到了上述效果, 但是数据量大的情况下,无法跑出,请教有没有更效率的实现方式。谢谢!
j = 1
for (i in 1:dim(df)[1]) {
if (i==1) {
df$rank <- 1
}
else {
if (df[i-1, "L"]==df[i, "L"] && df[i-1, "S"]==df[i, "S"]) {
df$rank <- j
}
else {
df$rank <- j +1
j = j +1
}
}
}