2014-11-08 64 views
2

我想在計算與data.frame的某個列中的特定值相匹配的行時使用變量作爲列名,例如;R:通過匹配一個可變的列名來對行進行計數

matches <- 0 
cols <- c("B1","B2","B3","S1") 
for (i in length(cols)) { 
    matches <- matches + nrow(dt[cols[i]=="some value"]) 
} 

我嘗試沒有成功過子集:

nrow(subset(dt, cols[i]=="some value")) 

我如何能做到這一點的任何建議?

+1

如果你可以展示dt的簡短版本,這將幫助我們理解你正在嘗試做什麼。 – Simon 2014-11-08 21:48:59

+0

試試'sum(dt [cols] ==「some value」)'。 – flodel 2014-11-08 22:34:01

回答

0

你需要使用get的字符串轉換爲一個變量名

nrow(subset(dt, get(cols[i])=="some value")) 
+1

很好,謝謝你的幫助。 – Johan 2014-11-08 22:45:20

+0

爲什麼downvote? – germcd 2014-11-08 23:02:39

+1

我沒有投票,試圖投票,但我不能投票: 「投票要求15聲望」 – Johan 2014-11-12 06:52:03

0

我不知道是什麼類的dt的。從你上面提出的,我想這將是data.frame

在您的代碼中,最讓我感到困惑的是subset(dt, cols[i]=="some value")dt[cols[i]=="some value"]

我猜colscolnames的dt,你想算的"some value"dt頻率。

你可以試試這個,

length(dt[dt=="some value"]) 

或特定的dt列,

subdt <- dt[,cols] 
length(subdt[subdt == "some value"]) 

希望它會有所幫助。

相關問題