我有多个具有相同确切结构但内容不同的数据框/骰子。他们的名字是我能区分它们的唯一途径。目标是将它们全部合并到一个数据框中,并带有一个因子列。原始数据帧每个小时/测量都有一列,所以首先我想收集所有内容。使用其数据框名称重命名列表中的数据框列
想象列mtcars DF的5至11是我的时间列。
mt1 <- mtcars
mt2 <- mtcars
mt3 <- mtcars
mt4 <- mtcars
mtlist <- list(m1 = mt1,
m2 = mt2,
m3 = mt3,
m4 = mt4)
require(tidyverse)
mtlist_tidy <- lapply(mtlist, function(x){
df <- x %>%
gather(exp, temp_name, 5:11)
return(df)
})
现在我卡住了。我需要在每个DFS的与DF即M1,M2的名字重新命名内mtlist_tidy的 “temp_name” 一栏,等:
> head(mtlist_tidy$m1)
mpg cyl disp hp exp temp_name
1 21.0 6 160 110 drat 3.90
2 21.0 6 160 110 drat 3.90
3 22.8 4 108 93 drat 3.85
4 21.4 6 258 110 drat 3.08
5 18.7 8 360 175 drat 3.15
6 18.1 6 225 105 drat 2.76
应该成为
> head(mtlist_tidy$m1)
mpg cyl disp hp exp m1
1 21.0 6 160 110 drat 3.90
2 21.0 6 160 110 drat 3.90
3 22.8 4 108 93 drat 3.85
4 21.4 6 258 110 drat 3.08
5 18.7 8 360 175 drat 3.15
6 18.1 6 225 105 drat 2.76
然后purrr::reduce(mtlist_tidy, full_join)
会的工作,完成我的任务。
我想一定的解决方案只使用purrr
和lapply跳过,但我没那么熟悉却又这个包。
你知道该函数'bind_rows'有一个选项来创建使用列表项的名称是“ID”列?你的问题听起来好像这可能是有用的。 –
是的!这是我需要的!我不知道这一点,谢谢。如果您将其作为答案提交,我会接受它。 – mariachi
如果您喜欢,请随时自行回答。可能还有一个重复的地方 –