R中方括号csv中的多个值
Multiple values in square bracket csv in R
我有一个这样的 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 个特征,最后一个是方括号中一个单元格中的大量传感器数据,用逗号分隔。我想获取此传感器数据的均值、模式、sd.. 等,但我不知道如何将其从括号中删除并进行分析。我尝试将其修改为 String 但数据量巨大且处理时间长!
有没有更简单的方法?
这可能不是最好或最漂亮的方法,但下面的方法会起作用。
不清楚你的文件是如何格式化的,但因为你说 "There are 5 features and the last one is",我假设你的数据是这样的:
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.csv
和 sep=";"
读取该 csv
df <- read.csv("myFile.csv",sep= ";", header = FALSE, stringsAsFactors = FALSE)
df$V5 <- gsub("\[","",df$V5)
df$V5 <- gsub("\]","",df$V5)
然后您可以 split
使用 strsplit(df$V5,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
我有一个这样的 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 个特征,最后一个是方括号中一个单元格中的大量传感器数据,用逗号分隔。我想获取此传感器数据的均值、模式、sd.. 等,但我不知道如何将其从括号中删除并进行分析。我尝试将其修改为 String 但数据量巨大且处理时间长! 有没有更简单的方法?
这可能不是最好或最漂亮的方法,但下面的方法会起作用。
不清楚你的文件是如何格式化的,但因为你说 "There are 5 features and the last one is",我假设你的数据是这样的:
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.csv
和 sep=";"
df <- read.csv("myFile.csv",sep= ";", header = FALSE, stringsAsFactors = FALSE)
df$V5 <- gsub("\[","",df$V5)
df$V5 <- gsub("\]","",df$V5)
然后您可以 split
使用 strsplit(df$V5,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