对于带有空格的rowSums使用read.csv

时间:2017-12-06 17:52:08

标签: r csv rowsum

我在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?

2 个答案:

答案 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;必须是数字错误