【问题标题】:How do I use coalesce rowise?如何明智地使用合并行?
【发布时间】:2018-02-09 17:12:24
【问题描述】:

我有这个小标题

library(tidyverse)
data_frame(first = c("a", NA, "b"),
           second = c(NA, "b", NA),
           third = c("a", NA, NA))

我想使用 coalesce() 逐行获取非 NA 的值。

所需的输出将是第一个非 NA 值的向量,我们可以从左到右逐行检查数据帧

[1] "a" "b" "b"

【问题讨论】:

  • 你想要的输出是什么?

标签: r dplyr


【解决方案1】:

do.callcoalesce 一起使用:

do.call(coalesce, df)
# [1] "a" "b" "b"

do.call 按顺序将df 中的列传递给coalesce,因此等效于coalesce(df$first, df$second, df$third)


df <- data_frame(
    first = c("a", NA, "b"),
    second = c(NA, "b", NA),
    third = c("a", NA, NA)
)

【讨论】:

  • @Onyambu 当我问这个问题时,我的意思是“按行”“在列之间”,而我将合并的正常行为称为“按列”,即“在列内”
  • 没关系。我想我误解了你的问题。
  • @Onyambu 使用!!! 运算符的好主意,dplyrdo.call 多。
  • 但仅在我们将一列合并到另一列时使用。不是一排到另一排。甚至do.call 也将一列合并到另一列,而不是将一行合并到另一列
猜你喜欢
  • 2020-04-22
  • 2014-03-05
  • 2022-01-11
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多