我们按'date'分组,将'colname'子集,根据'x'和'y'不为0的值,paste(toString),分别然后转换成单个字符串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/a01, b01, d01
#3 01-01-2021 d01 3 4 a01, d01/a01, b01, 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/b01, c01
数据
df1 <- structure(list(date = c("01-01-2021", "01-01-2021", "01-01-2021",
"02-01-2021", "02-01-2021"), colname = c("a01", "b01", "d01",
"b01", "c01"), x = c(1, 0, 3, 3.1, 4.5), y = c(2, 4, 4, 1.1,
6.2)), class = "data.frame", row.names = c(NA, -5L))