gpt4 book ai didi

r - 将许多 CSV 合并到不同的数据框中

转载 作者:行者123 更新时间:2023-12-02 09:32:41 27 4
gpt4 key购买 nike

我有很多 CSV,每个都对应一天的数据,存储方式如下:

Day1.csv:

ID, height, weight, color
a1, 3, 45, blue
a2, 3, 44, green
a3, 4, 48, blue

第 2 天.csv:

ID, height, weight, color
a1, 4, 47, green
a2, 4, 44, green
a3, 5, 49, yellow

我想使用每个 csv 中的信息为每个特征(即高度、体重等)制作一个单独的数据框。每个功能的输出如下所示:

高度.df:

ID, Day1, Day2
a1, 3, 4
a2, 3, 4
a3, 3, 5

我尝试使用 merge(),但这要求我一次仅输入两列。我也不确定如何使用文件名来标记该列。

最佳答案

我会考虑将所有数据放入一个列表中,然后将数据rbind在一起(如果列的类型相同)。

示例:

## Assume you have read in files and saved them as `data.frame`s named
## "day1", "day2", and so on....
temp <- mget(ls(pattern = "day\\d+"))
long <- do.call(rbind, lapply(names(temp), function(x) cbind(Day = x, temp[[x]])))

从那里,您可以非常轻松地进行转换。例如,将整个数据集变成“宽”数据集:

reshape(long, direction = "wide", idvar = "ID", timevar = "Day")
# ID height.day1 weight.day1 color.day1 height.day2 weight.day2 color.day2
# 1 a1 3 45 blue 4 47 green
# 2 a2 3 44 green 4 44 green
# 3 a3 4 48 blue 5 49 yellow

或者,只是一个特定的变量:

library(data.table)
dcast.data.table(as.data.table(long), ID ~ Day, value.var = "height")
# ID day1 day2
# 1: a1 3 4
# 2: a2 3 4
# 3: a3 4 5

关于r - 将许多 CSV 合并到不同的数据框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31129460/

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