我有24个数据帧(2年内每个月一个(,其中包含行中的状态和列中的值,如下所示:
Group.1 x
1 Michigan 41.60000
2 New Hampshire 41.03333
3 North Carolina 45.33333
4 Texas 52.00000
Group.1 x
1 Alabama 59.00000
2 Arizona 47.40000
3 California 37.00000
4 Delaware 44.92000
5 Florida 49.11125
6 Iowa 46.50000
7 Michigan 43.54000
8 Missouri 50.50000
9 Nevada 40.50000
10 New Hampshire 42.75000
11 New Mexico 44.35000
12 Tennessee 55.60000
13 Texas 49.33333
14 Utah 48.50000
15 West Virginia 66.00000
16 Wisconsin 45.28571
我想使第一个标题列成为所有51个州(包括华盛顿特区(的列表,并将剩余数据帧中的每个数据帧的信息填充到相应的行中。因此,最终产品将是一个数据帧[51x24],其列范围为2019年1月、2019年2月,2020年12月。解决这一问题的最佳方法是什么?
您可以使用dplyr::full_join
(或baser merge(连接两个数据帧,并对所有数据帧重复此操作。假设您将所有24个数据帧存储在一个列表中
# create a dataframe with all state names in case
# some states are not present in any of the 24 dataframes
all_states <- data.frame(Group.1 = c(state.name, "DC"))
# join all 24 data.frames one by one
Reduce(function(x,y) dplyr::full_join(x, y, by = "Group.1"),
df_list,
init = all_states
)
如果数据中还没有,则需要将列重命名为给定的年-月。在加入之前这样做会更好。