我需要从.csv文件加载数据,然后将其保存在 R 的字典中。
需要从.csv文件加载数千行数据条目。
数据格式:
country,region,value
1 , north , 101
1 , north , 219
2 , south , 308
2 , south , 862
... , ... , ...
我的预期结果可以保存在 R :
的数据结构中 country , region, list of values
1 north 101 , 219
2 south 308 , 862
这样我就可以获得与同一国家和地区相关联的值。
每行可能有不同的国家和地区。
我需要将同一国家和地区的价值保存在一起。
任何帮助将不胜感激。
答案 0 :(得分:0)
目前尚不清楚您对输入数据的确切意图,也不清楚所需的输出是什么。也许
tmp <- read.csv(text="country,region,value
1 , north , 101
1 , north , 219
2 , south , 308
2 , south , 862")
dups <- duplicated(tmp[1:2])
dat <- data.frame(tmp[!dups, 1:2], value = paste(tmp[!dups, 3], tmp[dups, 3], sep = " , "))
dat
## country region value
## 1 1 north 101 , 219
## 3 2 south 308 , 862
答案 1 :(得分:0)
如果我是你,我会坚持让你的数据保持“长”状态。但如果您真的想以这种方式“聚合”数据,可以查看aggregate
函数:
选项1:在列中存储为列表的值。很有趣,但后来还要处理。
aggregate(value ~ country + region, tmp, I, simplify=FALSE)
# country region value
# 1 1 north 101, 219
# 2 2 south 308, 862
str(.Last.value)
# 'data.frame': 2 obs. of 3 variables:
# $ country: num 1 2
# $ region : Factor w/ 2 levels " north "," south ": 1 2
# $ value :List of 2
# ..$ 1:Class 'AsIs' int [1:2] 101 219
# ..$ 3:Class 'AsIs' int [1:2] 308 862
选项2:值存储为单个逗号分隔的字符向量列。以后不太可能处理,但可能需要进一步处理(再次拆分)才有用。
aggregate(value ~ country + region, tmp, paste, collapse = ",")
# country region value
# 1 1 north 101,219
# 2 2 south 308,862
str(.Last.value)
# 'data.frame': 2 obs. of 3 variables:
# $ country: num 1 2
# $ region : Factor w/ 2 levels " north "," south ": 1 2
# $ value : chr "101,219" "308,862"