gpt4 book ai didi

使用 read.csv() 读取逗号分隔的字符串

转载 作者:行者123 更新时间:2023-12-04 10:08:14 25 4
gpt4 key购买 nike

我正在尝试加载一个逗号分隔的数据文件,该文件的文本列之一中也有逗号。以下示例代码生成这样一个文件 'test.csv',我将使用 read.csv() 加载它来说明我的问题。

> d <- data.frame(name = c("John Smith", "Smith, John"), age = c(34, 34))
> d
name age
1 John Smith 34
2 Smith, John 34
> write.csv(d, file = "test.csv", quote = F, row.names = F)
> d2 <- read.csv("test.csv")
> d2
name age
John Smith 34 NA
Smith John 34

因为 ','Smith, John , d2未正确分配。我如何读取文件以便 d2长得一模一样 d ?

谢谢。

最佳答案

1) read.pattern read.pattern (在 gsubfn 包中)可以读取这样的文件:

library(gsubfn)

pat <- "(.*),(.*)"
read.pattern("test.csv", pattern = pat, header = TRUE, as.is = TRUE)

给予:
         name age
1 John Smith 34
2 Smith, John 34

2) 二通另一种可能性是读入,修复它,然后重新阅读它。这不使用包并提供相同的输出。
L <- readLines("test.csv")
read.table(text = sub("(.*),", "\\1|", L), header = TRUE, sep = "|", as.is = TRUE)

注:对于最后有第三个字段的 3 个字段,请在 (1) 中使用它
pat <- "(.*),([^,]+),([^,]+)"

同样的情况在 (2) 中使用它,假设最后两个逗号中的每一个都相邻有非空格,并且文本字段中的任何逗号相邻至少有一个空格,并且字段至少有 2 个字符:
text = gsub("(\\S),(\\S)", "\\1|\\2", L)

如果您有其他安排,只需适当修改(1)中的正则表达式和 subgsub在(2)中。

关于使用 read.csv() 读取逗号分隔的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47916389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com