我有一个不同家庭的详细信息表。每一行都有一个家庭成员的名字。我想通过将所有家庭成员的详细信息放在一行来重组我的表。请参阅下面的示例表。
Family_no <- c(01,02,02,03,04,05,05,05,04)
name <- c('n1','n2','n3','n4','n5','n6','n7','n8','n9')
gender <- c('m','f','m','m','f','f','f','f','f')
age <- c(35,35,32,2,4,6,7,11,9)
relation <- c(1,2,1,2,4,6,7,8,1)
df <- data.frame(Family_no,name,gender,age,relation)
Family_no name gender age relation
1 1 n1 m 35 1
2 2 n2 f 35 2
3 2 n3 m 32 1
4 3 n4 m 2 2
5 4 n5 f 4 4
6 5 n6 f 6 6
7 5 n7 f 7 7
8 5 n8 f 11 8
9 4 n9 f 9 1
我正在寻找类似于下表的结果。你能告诉我该怎么走吗?
与
您可以从tidyr
中使用pivot_wider
来获得您想要的结果。
df_new <- df %>%
group_by(Family_no) %>%
mutate(row = row_number())
df_new2 <- df_new %>%
pivot_wider(
names_from = row,
values_from = c(name, gender, age, relation)
)
结果如下:
> df_new2
# A tibble: 5 × 13
# Groups: Family_no [5]
Family_no name_1 name_2 name_3 gender_1 gender_2 gender_3 age_1 age_2 age_3 relation_1 relation_2 relation_3
<dbl> <chr> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 n1 NA NA m NA NA 35 NA NA 1 NA NA
2 2 n2 n3 NA f m NA 35 32 NA 2 1 NA
3 3 n4 NA NA m NA NA 2 NA NA 2 NA NA
4 4 n5 n9 NA f f NA 4 9 NA 4 1 NA
5 5 n6 n7 n8 f f f 6 7 11 6 7 8
如果列的顺序很重要,我可以建议这样做(不确定是否可以直接使用pivot_wider
更简单):
cols <- grep("^(name|gender|age|relation)_", names(df_new), value = TRUE)
n <- length(cols)
df_new3 <- df_new2 %>%
select(Family_no,
matches(sprintf("^(name|gender|age|relation)_%d$", 1:n)))
与结果:
> df_new3
# A tibble: 5 × 13
# Groups: Family_no [5]
Family_no name_1 gender_1 age_1 relation_1 name_2 gender_2 age_2 relation_2 name_3 gender_3 age_3 relation_3
<dbl> <chr> <chr> <dbl> <dbl> <chr> <chr> <dbl> <dbl> <chr> <chr> <dbl> <dbl>
1 1 n1 m 35 1 NA NA NA NA NA NA NA NA
2 2 n2 f 35 2 n3 m 32 1 NA NA NA NA
3 3 n4 m 2 2 NA NA NA NA NA NA NA NA
4 4 n5 f 4 4 n9 f 9 1 NA NA NA NA
5 5 n6 f 6 6 n7 f 7 7 n8 f 11 8
相关内容
- 如何将TradingView Pine Script代码转换为JavaScript?
- MongoDB查询额外的转换字段
- 将DateTime Zone转换为其他DateTime Zone
- 在SQL查询中将IANA时区转换为int
- c# -将属性路径列表及其值动态地转换为Class对象
- 使用WSO2集成工作室将CSV转换为XML ?
- 将json转换为页面url参数
- Mapstruct:如何将对象中的整数转换为整数
- 如何将嵌套的JSON转换为逗号分隔的文件进行分析?以下是细节
- 当所有可能的类型具有相同的方法时,将泛型(接口)强制转换为类型
- IBM CDC表应该已经刷新了.转换服务器将终止
- openGL,转换的逆
- 在R中重组数据表,如果重复,将其转换为行到列
- JS使用Array.map()和Array.reduce()简化数组到对象转换的重组
- 重组此 JSON 数据以转换为条形图数据
- r语言 - 将数据帧重组为长格式将我的数字转换为 NA?
- 按交换维度重组列表并转换为 numpy
- 克洛朱尔的重组地图.将当前地图中的相应值转换为新地图
- 将数组的数组重组为哈希数组并转换为JSON
- 如何在将重组文本转换为html时保留超链接中的空格
最新更新
- 最有效的方法来限制SQL查询使用count(*)的对象在表中?
- Flexsearch导出和导入文档索引问题
- 我如何从一个任务数据框不计算整个数据框拉前五个值?
- 查找哈希的最小值和最大值
- 使用group by函数根据现有列获取二进制列的SQL查询
- 将Laravel关系对象上的字符串转换为整数
- 如何用新的hhk测试签名迷你过滤器驱动程序
- JS选择插入后的元素
- 根据唯一值合并数据帧
- 在Python 3.x中写入压缩CSV文件时出错
- 如何在其他2列数据的条件下生成一列数据的折线图
- Ruby:我有一个hash,键=str.split(//),值=这些字符的索引.如果存在超过1个字符,如何将多个索引添加
- 如何检查一个字符串是否包含在Swift字符串数组中的子字符串?
- 动态地在MAUI网格中创建数据绑定
- ModelMapper 2.4.4和Groovy 3.0兼容性问题
- Groupby and Sum函数,显示未分组项的索引和和
- 如何加快django加载时间?
- 如何在mysql的游标循环中只发生一次插入
- 如何在.htaccess中替换空白(%20)到分数(_)?(基于php)
- 显示处于不工作状态的集合中的随机项
- Typescript:用一个初始值开始一个reduce语句?
- ThinkingSphinx 实时索引和 Rspec 验收测试 w Chrome 无头
- 无法在Azure DevOps发布管道中提取.net单文件应用程序
- Javascript-优化算法(复杂数据结构)
- BigTable ReadModifyWriteRow支持映射功能
- 如何在没有全局URL和变量的情况下加载angular中的外部脚本
- 循环在第一次迭代后停止
- 如何在.net核心后台服务ExecuteAsync中只启动一次进程
- R/Shiny App将Plot写入RStudio中的Plot视图,而不是Shiny UI
- 如何正确缓存webaudio对象?
热门标签:
javascript python java c# php android html jquery c++ css ios sql mysql arrays asp.net json python-3.x ruby-on-rails .net sql-server django objective-c excel regex ruby linux ajax iphone xml vba spring asp.net-mvc database wordpress string postgresql wpf windows xcode bash git oracle list vb.net multithreading eclipse algorithm macos powershell visual-studio image forms numpy scala function api selenium