计算csv文件中每个字段的最大长度

时间:2015-06-07 18:04:34

标签: r csv

我有一个groovy脚本,它遍历csv并存储文件中每个字段的最大长度:

def csv = new File('./myfile.csv').text

def max = [ ] as ArrayList

csv.eachLine { line, count ->

    def params = line.split(',')

    // skip the header line
    if (count > 0) 
    {
        params.eachWithIndex() { p, index ->        
            if (p.length() > max[index] ) {
                max[index] = p.length()
            }
        }
     }
}
println "Max length of fields: ${max}"

我想使用R实现相同的目标,理想情况下使用库函数。

如何在csv文件中打印出最大字段长度?

示例输入:

foo,bar
abcd,12345
def,234567

输出:

Max length of fields: [4, 6]

2 个答案:

答案 0 :(得分:1)

将数据读入数据框并在其列中显示指示的函数。如果数据位于文件中,请将text = Lines替换为file = "myfile.csv"。有关可能需要或可能不需要的其他参数,请参阅?read.csv,具体取决于您的真实文件的外观。

# test data
Lines <- "foo,bar
abcd,12345
def,234567"

DF <- read.csv(text = Lines, colClasses = "character")
sapply(DF, function(x) max(nchar(x)))

,并提供:

foo bar 
  4   6 

注意:如果您有这样的输入,可能会遇到一个问题。幸运的是,这个答案是正确的:

Lines <- "foo,bar
abcd,1234567e9
def,234567"

答案 1 :(得分:1)

根据我的经验,最快的方法是使用fread中的data.table功能来阅读文件,然后它与Grothendieck的答案相同

file_path <- './myfile.csv'
dt <- fread(file_path, colClasses = "character")
sapply(dt, function(x) max(nchar(x)))