亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用$和列名稱向量動態選擇數據框列

使用$和列名稱向量動態選擇數據框列

鴻蒙傳說 2019-05-25 15:46:50
使用$和列名稱向量動態選擇數據框列我希望根據不同的列來訂購數據框,一個轉彎。我有一個字符向量,其中的相關列名order應該基于:parameter <- c("market_value_LOCAL", "ep", "book_price", "sales_price", "dividend_yield",               "beta", "TOTAL_RATING_SCORE", "ENVIRONMENT", "SOCIAL", "GOVERNANCE")我想循環遍歷名稱parameter并動態選擇要用于order我的數據的列:Q1_R1000_parameter <- Q1_R1000[order(Q1_R1000$parameter[X]), ]這里X是1:10(因為我有10個項目parameter)。為了使我的示例可重現,請考慮mtcars存儲在字符向量中的數據集和一些變量名稱cols。當我嘗試mtcars使用動態子集選擇變量時cols,以與上面(Q1_R1000$parameter[X])類似的方式,未選擇該列:cols <- c("cyl", "am")mtcars$cols[1]# NULL
查看完整描述

3 回答

?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

如果我理解正確,你有一個包含變量名稱的向量,并希望遍歷每個名稱并按它們對數據框進行排序。如果是這樣,這個例子應該為您說明一個解決方案。你的主要問題(完整的例子不完整,所以我不確定你可能缺少什么)是它應該是,order(Q1_R1000[,parameter[X]])而不是order(Q1_R1000$parameter[X]),因為參數是一個外部對象,包含一個與直接列相對的變量名您的數據框(當$適當時)。


set.seed(1)

dat <- data.frame(var1=round(rnorm(10)),

                   var2=round(rnorm(10)),

                   var3=round(rnorm(10)))

param <- paste0("var",1:3)

dat

#   var1 var2 var3

#1    -1    2    1

#2     0    0    1

#3    -1   -1    0

#4     2   -2   -2

#5     0    1    1

#6    -1    0    0

#7     0    0    0

#8     1    1   -1

#9     1    1    0

#10    0    1    0


for(p in rev(param)){

   dat <- dat[order(dat[,p]),]

 }

dat

#   var1 var2 var3

#3    -1   -1    0

#6    -1    0    0

#1    -1    2    1

#7     0    0    0

#2     0    0    1

#10    0    1    0

#5     0    1    1

#8     1    1   -1

#9     1    1    0

#4     2   -2   -2


查看完整回答
反對 回復 2019-05-25
  • 3 回答
  • 0 關注
  • 802 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號