R:向具有条件的现有数据框添加新列

时间:2014-11-24 13:00:46

标签: r dataframe

注意:现有的答案中没有一个解决了我的问题

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。任何人都可以帮忙吗?

2 个答案:

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

回答你的问题?