【问题标题】:Multiple values in square bracket csv in R [closed]R中方括号csv中的多个值[关闭]
【发布时间】:2020-01-20 09:40:21
【问题描述】:

我有一个这样的 csv 文件:

1556891503.326399;16384;340;48188.23529411765;[1618.377685546875, 1620.2911376953125, 1620.1904296874998, 1619.9386596679685, 1620.391845703125, 1620.2911376953125, 1620.794677734375, 1618.1762695312498, 1620.8450317382812, 1621.0968017578125, 1620.3414916992188, 1620.7443237304685, 1620.391845703125, 1620.9457397460935,...]; 155689433.326399;16384;340;48188.23529411765;[1618.377685546875, 1620.2993876953125, 1620.1904296874998, 1619.9386596679685, 1620.391845703125, 1620.2911376953125..];...

有 5 个特征,最后一个是一个巨大的传感器数据,位于方括号中的一个单元格中,并用逗号分隔。我想取这个传感器数据的平均值、模式、标准差等,但我不知道如何从括号中删除它并分析它。我尝试将其修改为字符串,但数据量很大,处理时间很长! 有没有更简单的方法?

【问题讨论】:

  • 您可以将数据读入 R 并在此处发布dput(head(data)) 吗?

标签: r csv square-bracket multiple-value


【解决方案1】:

这可能不是最好或最漂亮的方法,但下面的方法会起作用。

不清楚您的文件是如何格式化的,但是因为您说“有 5 个功能,最后一个是”,所以我假设您的数据如下所示:

 df1 <- data.frame(V1=c(1556891503,155689433),V2=c(16384,16384),V3=c(340,340),V4=c(12,12),V5=c("[12,12,12,23]","[8,8,8,8]"))

           V1    V2  V3 V4            V5
 1 1556891503 16384 340 12 [12,12,12,23]
 2  155689433 16384 340 12     [8,8,8,8]

您可以使用 read.csvsep=";" 读取该 csv

df <- read.csv("myFile.csv",sep= ";", header = FALSE, stringsAsFactors = FALSE)
df$V5 <- gsub("\\[","",df$V5)
df$V5 <- gsub("\\]","",df$V5)

然后您可以使用strsplit(df$V5,split = ", ")split 第 5 列,将其转换为数字

df$V6 <- strsplit(df$V5,split = ", ")
df$V6 <- sapply(df$V6, function(x) as.numeric(unlist(x)))

并计算您的统计数据

df$mean <- sapply(df$V6, function(x) mean(unlist(x)))
df$sd <- sapply(df$V6, function(x) sd(unlist(x)))

     mean        sd
1 1620.201 0.8779917
2 1619.915 0.7689437

【讨论】:

  • 感谢您的回答。该文件与您创建的完全相同。我尝试了您的代码,但在这部分出现错误: dataPump$V6 $<-.data.frame(*tmp*, V6, value = c(NA_real_, NA_real_, NA_real_, : 替换有 16384 行,数据有 882
  • 有一个错字,试试sapply(dataPump$V6strsplited 列现在是 V6,而不是 V5
  • 我已经修正了那个错字。我猜错误源是不同的。 $&lt;-.data.frame(*tmp*, V6, value = c(1618.37768554688, 1620.29113769531, 中的错误:替换有 16384 行,数据有 882
  • 你应该发布你的数据,因为使用你问题中的行,代码可以工作。
  • 他们关闭了这个话题,所以我不能再发帖了,但我修改了它,这很有效:dataPump$V6
猜你喜欢
  • 2013-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 2016-06-06
  • 1970-01-01
  • 2014-04-23
相关资源
最近更新 更多