如何使用tidyr从家庭花名册中堆叠多个列
我有调查数据,每个家庭有一名受访者被问及每个家庭成员的年龄和教育水平。数据范围很广,因为每个家庭成员的年龄和教育程度都有索引列 下面是一个简单的例子:如何使用tidyr从家庭花名册中堆叠多个列,r,tidyverse,tidyr,R,Tidyverse,Tidyr,我有调查数据,每个家庭有一名受访者被问及每个家庭成员的年龄和教育水平。数据范围很广,因为每个家庭成员的年龄和教育程度都有索引列 下面是一个简单的例子: df <- data.frame( HHID = 1:2, age_1 = c(4, 19), yrsedu_1 = c(8,12), age_2 = c(7, 6), yrsedu_2 = c(14, 6) ) 我怎样才能在三天内完成这项工作?这对列造成了问题。随着gather停
df <-
data.frame(
HHID = 1:2,
age_1 = c(4, 19),
yrsedu_1 = c(8,12),
age_2 = c(7, 6),
yrsedu_2 = c(14, 6)
)
我怎样才能在三天内完成这项工作?这对列造成了问题。随着gather停用,您可以再使用新的pivot\u:
由于“聚集”已停用,您可以使用新的pivot_更长时间:
它不是一个tidyverse解决方案,但仅提及它,一种替代方法是使用data.table中的melt函数:
图书馆数据表
age这不是一种tidyverse解决方案,但值得一提的是,另一种选择是使用data.table中的melt函数:
图书馆数据表
年龄是不是这个问题没有被帖子覆盖,特别是pivot_更长的答案?这个问题没有被帖子覆盖,特别是pivot_更长的答案?我们似乎已经走了一个完整的循环,pivot_更长的与旧的base R重塑没什么不同-例如:idv我不同意,在tidyverse,他们不断地试验很多东西,最终同意旧的解决方案更好PWe似乎已经走了一整圈,pivot__Long与旧的基础R重塑没有什么不同-例如:idv我不反对,在tidyverse,他们不断尝试很多东西,最终同意旧的好解决方案更好P
data.frame(
HHID = c(1,1,2,2),
hh_child_number = c(1,2,1,2),
age = c(4,7,19,6),
yrsedu = c(8,14,12,6))
tidyr::pivot_longer(df, cols = -HHID,
names_to = c(".value", "hh_child_number"),
names_sep = "_") %>% type.convert(as.is = TRUE)
# A tibble: 4 x 4
# HHID hh_child_number age yrsedu
# <int> <int> <int> <int>
#1 1 1 4 8
#2 1 2 7 14
#3 2 1 19 12
#4 2 2 6 6