在 R 中导入; (read.csv) 自动忽略非数字列
Importing in R; (read.csv) Ignore non-numeric columns automatically
我想在 R 中导入一个包含一些非数字字段(即日期或字符串)的 tsv 文件:
num1 num2 date
1 2 2012-10-18 12:17:19
2 4 2014-11-16 09:30:23
4 11 2010-03-18 22:18:04
12 3 2015-02-18 12:55:50
13 1 2014-05-16 10:39:11
2 14 2011-05-26 20:48:54
我正在使用以下命令:
a = read.csv("C:\test\testFile.tsv", sep="\t")
我想自动忽略所有非数字值(或输入类似 "NA" 的内容)。并且不想提及所有要忽略的字符串列名。
我尝试了 "stringsAsFactors" 和 "as.is" 参数,但没有成功。
有什么想法吗?
刚刚找到这个解决方案:
a = read.csv("C:\test\testFile.tsv", sep="\t", colClasses=c(NA, NA, "NULL"))
虽然它不是完全自动的。
这里有很多选择。
首先,您可以在阅读 table:
时通知 R
data <- read.csv("C:\test\testFile.tsv",
sep="\t",
colClasses=c(NA, NA, "NULL"))
如果您有很多非数字列,比如 10,您可以将 rep
用作 colClasses=c(NA, NA, rep("NULL", 10))
。
其次,您可以读取所有内容并在之后处理删除(注意 stringsAsFactors):
data <- read.csv("C:\test\testFile.tsv",
sep="\t", stringsAsFactors = FALSE)
您可以对标识为字符的所有列进行子集化。
df[, !sapply(df, is.character)]
或者再对你施以毁灭性的手段data.frame:
df[sapply(df, is.character)] <- list(NULL)
您可以进一步确保仅保留数字列:
df[,-grep ("Date|factor|character", sapply(df, class))] <- list(NULL)
我想在 R 中导入一个包含一些非数字字段(即日期或字符串)的 tsv 文件:
num1 num2 date
1 2 2012-10-18 12:17:19
2 4 2014-11-16 09:30:23
4 11 2010-03-18 22:18:04
12 3 2015-02-18 12:55:50
13 1 2014-05-16 10:39:11
2 14 2011-05-26 20:48:54
我正在使用以下命令:
a = read.csv("C:\test\testFile.tsv", sep="\t")
我想自动忽略所有非数字值(或输入类似 "NA" 的内容)。并且不想提及所有要忽略的字符串列名。
我尝试了 "stringsAsFactors" 和 "as.is" 参数,但没有成功。
有什么想法吗?
刚刚找到这个解决方案:
a = read.csv("C:\test\testFile.tsv", sep="\t", colClasses=c(NA, NA, "NULL"))
虽然它不是完全自动的。
这里有很多选择。 首先,您可以在阅读 table:
时通知 Rdata <- read.csv("C:\test\testFile.tsv",
sep="\t",
colClasses=c(NA, NA, "NULL"))
如果您有很多非数字列,比如 10,您可以将 rep
用作 colClasses=c(NA, NA, rep("NULL", 10))
。
其次,您可以读取所有内容并在之后处理删除(注意 stringsAsFactors):
data <- read.csv("C:\test\testFile.tsv",
sep="\t", stringsAsFactors = FALSE)
您可以对标识为字符的所有列进行子集化。
df[, !sapply(df, is.character)]
或者再对你施以毁灭性的手段data.frame:
df[sapply(df, is.character)] <- list(NULL)
您可以进一步确保仅保留数字列:
df[,-grep ("Date|factor|character", sapply(df, class))] <- list(NULL)