我遍历数据框中的列(它也是我的代码后面的数据表)。在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