从宽到长,多变量R
我在这里搜索过,在我自己的问题上很难使用其他例子。我尝试从宽到长,但创建新的变量头。这是我的前和后。有人能告诉我怎么做吗?多谢各位从宽到长,多变量R,r,tidyr,R,Tidyr,我在这里搜索过,在我自己的问题上很难使用其他例子。我尝试从宽到长,但创建新的变量头。这是我的前和后。有人能告诉我怎么做吗?多谢各位 #Wide id = c(1,2) sex = c(2,1) age = c(25,33) group = c("non_unique","unique") large_firm = c(1,6) small_firm = c(3,1) small_hi = c(6,4) large_hi = c(1,2) wide =
#Wide
id = c(1,2)
sex = c(2,1)
age = c(25,33)
group = c("non_unique","unique")
large_firm = c(1,6)
small_firm = c(3,1)
small_hi = c(6,4)
large_hi = c(1,2)
wide =data.frame(id,sex,age,group,large_firm,small_firm,small_hi,large_hi)
#Long
id = c(1,1,2,2)
sex = c(2,2,1,1)
age = c(25,25,33,33)
group = c("non_unique","non_unique","unique","unique")
firm_preference_score = c(3,1,1,6)
hi_score = c(6,1,4,2)
firm_size = c("small_firm","large_firm","small_firm","large_firm")
hi_group = c("small","large","small","large")
long =data.frame(id,sex,age,group,firm_size,firm_preference_score,hi_group,hi_score)
您可以再使用
pivot\u
:
tidyr::pivot_longer(wide,
cols = large_firm:large_hi,
names_to = c('firm_size', '.value'),
names_sep = '_')
# id sex age group firm_size firm hi
# <dbl> <dbl> <dbl> <chr> <chr> <dbl> <dbl>
#1 1 2 25 non_unique large 1 1
#2 1 2 25 non_unique small 3 6
#3 2 1 33 unique large 6 2
#4 2 1 33 unique small 1 4
这回答了你的问题吗?
library(dplyr)
tidyr::pivot_longer(wide,
cols = large_firm:large_hi,
names_to = c('firm_size', '.value'),
names_sep = '_') %>%
mutate(hi_group = firm_size,
firm_size = paste(firm_size, 'firm', sep = '_')) %>%
rename(firm_preference_score = firm, hi_score = hi)