我在R中使用从csv文件导入的数据,我正在尝试获取一部分数据的rowSum。数据可以是0,1或空白。我想在所有这些行中得到所有1的总和(理想情况下,找到每行中有多少非空列的计数,但这是我的下一个问题)。我正在尝试以下代码:
df1 <- read.csv("/Users/ardyn/test.csv", header = T, na.strings = "")
rowSums(df1[,36:135])
这给了我以下错误:
“rowSums中的错误(df1 [,36:135]):'x'必须是数字”。
当我检查时,我试图总结的列是具有3个级别的因子(“。”,“0”,“1”)。
如何导入数据或更改我的rowSums命令,以便当我对变量子集求和时,它只计算1?
答案 0 :(得分:1)
NA
只能处理数字和rowSums()
。如果有效,请尝试设置na.strings="."
否则,我们可以在阅读csv后用.
替换所有NA
。
df1 <- read.csv("/Users/ardyn/test.csv", header = TRUE,
na.strings = ".", stringsAsFactors=FALSE)
rowSums(df1[,36:135], na.rm=TRUE)
将.
更改为NA
事后的示例:
dtf <- as.data.frame(matrix(sample(c(".", "0", "1"), 20, replace=TRUE), 4))
sapply(dtf, function(x) as.numeric(gsub("\\.", "NA", x)))
# V1 V2 V3 V4 V5
# [1,] 1 0 0 0 1
# [2,] 1 1 0 0 0
# [3,] 1 1 NA 1 NA
# [4,] NA NA 1 0 0
答案 1 :(得分:0)
我不确定之前的答案是否解决了你想要只对1进行总结的问题。也许这就是你能做的事情
var param = document.forms[0];
try{
http('POST', 'myApp.cfc?method=UpdateRecordAJAX', saveResp, param);
}catch(err) {
alert('Error!')
}
我认为它应该停止抛出&#39; x&#39;必须是数字错误