注意:现有的答案中没有一个解决了我的问题
DF1:
asn used domain_used
1 9928 2594
2 2048 100
3 1792 170
4 57344 991
5 36864 1173
6 24576 194
7 26624 226
8 15360 584
9 65792 3003
10 1427968 32904
11 13312 266
12 28672 388
我想基于domain_used列对此数据框进行排序,如果“asn”位于前10行(排序时),则创建一个名为“top_bad”的新列为= 1。任何人都可以帮忙吗?
答案 0 :(得分:5)
或者,如果您想通过引用修改数据集,请尝试data.table
包
library(data.table)
setorder(setDT(df1), domain_used)[1:10, top_bad := 1]
或者,如果你想在NA
s
setorder(setDT(df1), domain_used)[, top_bad := c(1:10, rep(0, .N - 10))]
答案 1 :(得分:2)
这是:
df1<-df1[order(df1$domain_used),] # sort the data.frame according to domain_used
df1$top_bad <- 0 # create new variable top_bad and set values to 0 for each row
df1$top_bad[1:10] <- 1 # set top_bad to 1 for the first 10 values
回答你的问题?