r-创建标题列并组合不等长度/值的数据帧



我有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
)

如果数据中还没有,则需要将列重命名为给定的年-月。在加入之前这样做会更好。

最新更新