r - 将某些列的名称作为数据框每一行的一个单元格

标签 r

因此,我有以下关于巴士站 ID 和经过该站的巴士线路的数据框。

stop_id     20 goes    20 return    21 goes    21 return    22 goes    22 return 
C0001          X          NA          X           NA           X           NA
C0002          NA         X           NA          X            NA          X 
C0003          X          NA          NA          NA           X           NA 
C0004          NA         X           NA          NA           NA          X  
C0005          NA         NA          X           NA           X           NA 
C0006          NA         NA          NA          X            NA          X
如果线路有一个“X”而不是 NA,则表示该公交线路经过该站,即 20 号线、21 号线和 22 号线都经过 C0001 站。
我需要做的是将所有引用该行的列“汇总”到一个名为“行”的新列中。对于每个公交车站,此列将包含经过它的公交车线路。
所以我正在寻找的是一个看起来像这样的数据框:
stop_id    lines
C0001       20 goes - 21 goes - 22 goes
C0002       20 return - 21 return - 22 return
C0003       20 goes - 22 goes
C0004       20 return - 22 return
C0005       21 goes - 22 goes
C0006       21 return - 22 return
更多信息:我需要一种通用的方法来做到这一点,因为我的真实数据框有 3709 个公交车站和 90 多条线路。
谢谢你。

最佳答案

最简单的方法是遍历行和 paste非 NA 元素的列名

cbind(df1[1], lines = apply(df1[-1], 1, function(x) paste(names(x)[!is.na(x)],
          collapse = ' - ')))
-输出
stop_id                             lines
1   C0001       20 goes - 21 goes - 22 goes
2   C0002 20 return - 21 return - 22 return
3   C0003                 20 goes - 22 goes
4   C0004             20 return - 22 return
5   C0005                 21 goes - 22 goes
6   C0006             21 return - 22 return
数据
df1 <- structure(list(stop_id = c("C0001", "C0002", "C0003", "C0004", 
"C0005", "C0006"), `20 goes` = c("X", NA, "X", NA, NA, NA), `20 return` = c(NA, 
"X", NA, "X", NA, NA), `21 goes` = c("X", NA, NA, NA, "X", NA
), `21 return` = c(NA, "X", NA, NA, NA, "X"), `22 goes` = c("X", 
NA, "X", NA, "X", NA), `22 return` = c(NA, "X", NA, "X", NA, 
"X")), class = "data.frame", row.names = c(NA, -6L))

关于r - 将某些列的名称作为数据框每一行的一个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68446422/

相关文章:

r - 使用带有单个绘图点的ggrepel/在标签和点之间添加线

r - 如何在 dplyr 中分组并获取离散列的相反值?

R data.table 从剪贴板读取

java - 我应该在使用后重置 Java 堆空间最大值吗?

R,R6,从 R6Generator 对象获取完整的类名

用向量计算替换函数中的 for 循环以加速 R

r - 使用 Apache 2.4 在 Shiny 服务器中代理 Web 套接字

r - 正确地将 lapply/apply 应用于 xts 对象并应用 lag.xts - 将结果作为 xts 对象返回

r - 如何在R中连续调整图例?

r - 如何修改gtsummary表中的变量标签