2014-11-24 36 views
0

注:非已有的答案解決我的問題R:添加新的列到現有的數據幀符合條件

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。任何身體可以幫助嗎?

回答

1

這是否:

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 

回答你的問題?

+0

這個工作謝謝@CathG。我不明白的唯一問題是你爲什麼在這裏使用(-1)?這意味着什麼 - 在R表示中表示? – UserYmY 2014-11-24 13:25:38

+1

@ user2058811,我沒有,我用'<-'給df1賦值$ top_bad – Cath 2014-11-24 13:26:25

+0

@ user2058811,我編輯了我的答案補充說明 – Cath 2014-11-24 13:29:01

4

或者,如果你想修改數據通過標準設定,嘗試data.table

library(data.table) 
setorder(setDT(df1), domain_used)[1:10, top_bad := 1] 

或者,如果你想零而不是在NA小號

setorder(setDT(df1), domain_used)[, top_bad := c(1:10, rep(0, .N - 10))] 
+0

這個也適用,謝謝大衛 – UserYmY 2014-11-24 13:25:11

相關問題