如何解决基于数据框其他列的列行连接 数据
我想连接由 ',' 分隔的列行值,查看行值不应为零的列。
步骤示例:
- group_by 日期,行值不为零的列名 x,连接列名 'colname' 的值,以 ',' 分隔
- group_by 日期,行值不为零的列名 y,连接列名 'colname' 的值,以 ',' 分隔
- 使用第 1 步和第 2 步中的这两个串联值,将它们串联起来,以“/”分隔,创建一个新列 colname1
- 将 colname1 中的最终串联值展开为 group_by 日期的所有行项
数据框:
输出数据帧:
解决方法
我们根据 'date' 分组,根据 'x' 和 'y' 不为 0、paste
(toString
) 的值,分别对 'colname' 进行子集化,然后进行转换用 str_c
library(dplyr)
library(stringr)
df1 %>%
group_by(date) %>%
mutate(colname1 = str_c(toString(colname[x != 0]),toString(colname[y != 0]),sep = "/")) %>%
ungroup
-输出
# A tibble: 5 x 5
# date colname x y colname1
# <chr> <chr> <dbl> <dbl> <chr>
#1 01-01-2021 a01 1 2 a01,d01/a01,b01,d01
#2 01-01-2021 b01 0 4 a01,d01
#3 01-01-2021 d01 3 4 a01,d01
#4 02-01-2021 b01 3.1 1.1 b01,c01/b01,c01
#5 02-01-2021 c01 4.5 6.2 b01,c01
数据
df1 <- structure(list(date = c("01-01-2021","01-01-2021","02-01-2021","02-01-2021"),colname = c("a01","b01","d01","c01"),x = c(1,3,3.1,4.5),y = c(2,4,1.1,6.2)),class = "data.frame",row.names = c(NA,-5L))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。