检查R中字符串中的项目数

Checking for number of items in a string in R

我有一个非常大的 csv 文件(140 万行)。它应该在每行中有 22 个字段和 21 个逗号。它是通过获取季度文本文件并将它们编译成一个大文本文件创建的,以便我可以导入 SQL。过去,一个字段不在文件中。我没有时间逐行检查。

在 R 中,有没有办法验证每行有 22 个字段或 21 个逗号?下面是一个小样本数据集。可能缺少的字段是第 10 个槽中的 0。

32,01,01,01,01,01,000000,123,456,0,132,345,456,456,789,235,256,88,4,1,2,1
32,01,01,01,01,01,000001,123,456,0,132,345,456,456,789,235,256,88,5,1,2,1

假设 df 是您的数据框

apply(df, 1, length)

这将为您提供每行的长度。

您可以使用基础 R 函数 count.fields 来执行此操作:

count.fields(tmp, sep=",")
[1] 22 22

此函数的输入是文件名或连接名。下面,我提供了一个 textConnection。对于大文件,您可能希望将其输入 table:

table(count.fields(tmp, sep=","))

请注意,这也可用于使用 length 计算文件中的行数,类似于 *nix 操作系统中 wc -l 的输出。

数据

tmp <- textConnection(
"32,01,01,01,01,01,000000,123,456,0,132,345,456,456,789,235,256,88,4,1,2,1
32,01,01,01,01,01,000001,123,456,0,132,345,456,456,789,235,256,88,5,1,2,1"
)