R 如何重塑数据帧并向其添加新变量
我有一个如下所示的数据框R 如何重塑数据帧并向其添加新变量,r,dataframe,R,Dataframe,我有一个如下所示的数据框 prefecture height_M weight_M height_F weight_F 1 110.7 19.1 109.8 18.7 2 111.0 19.1 110.1 18.7 3 111.5 19.7 110.2 19.4 我不熟悉R,不确定“重塑”这个词是否正确,但我想通过创建一个新变量“sex”来重塑数据帧,该变量将是m或F 我还想将h
prefecture height_M weight_M height_F weight_F
1 110.7 19.1 109.8 18.7
2 111.0 19.1 110.1 18.7
3 111.5 19.7 110.2 19.4
我不熟悉R,不确定“重塑”这个词是否正确,但我想通过创建一个新变量“sex”来重塑数据帧,该变量将是m或F
我还想将height_M、weight_M、height_F、weight_F的变量名更改为“height”和“weight”
预期的结果将是这样的
prefecture height weight sex
1 110.7 19.1 M
2 111.0 19.1 M
3 111.5 19.7 M
1 109.8 18.7 F
2 110.1 18.7 F
3 110.2 19.4 F
我试着用mutate和rbind来做这件事,但想知道是否有更好的更聪明的方法,需要帮助。使用
dplyr
和tidyr
我们可以收集
到长格式中,将
键分离到不同的列中,然后扩展到宽格式中
library(dplyr)
library(tidyr)
df %>%
gather(key, value, -prefecture) %>%
separate(key, c("key", "sex"), sep = "_") %>%
spread(key, value)
# prefecture sex height weight
#1 1 F 109.8 18.7
#2 1 M 110.7 19.1
#3 2 F 110.1 18.7
#4 2 M 111.0 19.1
#5 3 F 110.2 19.4
#6 3 M 111.5 19.7
解决方案将是-重塑(dat,idvar=“eperty”,variable=-1,sep=“”,timevar=“sex”,direction=“long”)