我遍歷數據框中的列(它也是我的代碼後面的數據表)。在SQL中,我想每個變量做等價的樣子:data.table在R中SELECT GROUP BY列索引?
SELECT COUNT(VAR) FROM df GROUP BY MonthYear
我遇到了一些麻煩R中做的事情,雖然。我擁有的文件結構不佳,所以我有某種dplyr
+ data.table
解決方法我試圖使功能。
library(dplyr)
library(data.table)
df <- data.frame(MonthYear = c("JAN15", "JAN15", "FEB15", "MAR15", "MAR15"), V1 = c(1,1,0,0,0), V2 = c(0,1,1,1,0), V3 = c(0,0,0,1,1), V4 = c(0,1,1,1,1))
for(colNum in 2:length(names(df))){
colName <- names(df)[colNum]
filtered <- select(df, c(1, colNum))
filtered_dt <- data.table(filtered, key = "MonthYear")
trimmed <- filtered_dt[, count = sum(colName), by = key(filtered_dt)]
}
這導致錯:
Error in sum(column) : invalid 'type' (character) of argument
爲V1
,我知道trimmed
分配應該是這樣的:
trimmed <- filtered_dt[, count = sum(V1), by = key(filtered_dt)]
我只是不知道如何讓人物值爲"V1"
以符合該語法。
你有一個錯字。將'count = sum(colName)'包裝在'。()'中。這是在常見問題:https://rawgit.com/wiki/Rdatatable/data.table/vignettes/datatable-faq.html#unused-arguments-mysum-sumv不知道這是你唯一的問題。 – Frank
雖然這仍然不能回答我的問題。我犯了同樣的錯誤。如何讓'character''「V1」'值在'trimmed'行工作? – blacksite
對不起,我不是故意建議它回答你的問題。 – Frank