【问题标题】:Merge Two Columns in R, Fill in NAs with Value [closed]合并 R 中的两列,用值填充 NA [关闭]
【发布时间】:2015-11-17 06:05:53
【问题描述】:

我在 R 中的变量 Name 上合并了两个数据集。我需要一种方法来组合 School.x 和 School.y 列,以便 NA 字段由另一列填充。我认为 R 中有一些简单的方法可以做到这一点 - 有人有想法吗?

下面的合并数据示例的图像(由于某种原因无法粘贴表格。)

如果你能弄清楚如何做到这一点,如果 School.x 和 School.y 都有一个值,那么合并的列只会从 School.x 中获取默认值 (例如,如果 Chloe 在 School.x 中被列为林肯高中,但在 School.y 中被列为林肯高中,我只希望该列默认为林肯。)

非常感谢!

【问题讨论】:

  • 如果你能弄清楚如何发布一个可重现的例子,那就是奖励。 Here's a hint

标签: r merge


【解决方案1】:

下面的代码应该可以解决问题。我将示例数据框的第三行修改为 School.xSchool.y 都具有非 NA 值的情况,以展示您问题的额外部分。

df <- data.frame(Name=c("Adam", "Bob", "Jane", "Bill", "Chloe", "Mandy"),
                 School.x=c("Hillcrest", NA, "Irvington", NA, "Lincoln", NA),
                 School.y=c(NA, "Star Academy", "Star Academy", "Mission Hills", NA,
                            "Washington Middle"),
                 stringsAsFactors=FALSE)


# choose default value from 'School.x' in the case that both 'School.x' and
# 'School.y' have values
df$merged[!is.na(df$School.x) & !is.na(df$School.y)] <-
    df$School.x[!is.na(df$School.x) & !is.na(df$School.y)]

# replace NA values in 'School.x' with values from 'School.y' and vice-versa
df$merged[is.na(df$School.x)] <- df$School.y[is.na(df$School.x)]
df$merged[is.na(df$School.y)] <- df$School.x[is.na(df$School.y)]

> df
   Name  School.x          School.y            merged
1  Adam Hillcrest              <NA>         Hillcrest
2   Bob      <NA>      Star Academy      Star Academy
3  Jane Irvington      Star Academy         Irvington
4  Bill      <NA>     Mission Hills     Mission Hills
5 Chloe   Lincoln              <NA>           Lincoln
6 Mandy      <NA> Washington Middle Washington Middle

【讨论】:

  • 并添加 df$School.y[!is.na(df$School.x) &amp; !is.na(df$School.y)] &lt;- df$School.x[!is.na(df$School.x) &amp; !is.na(df$School.y)] 或类似的东西作为“奖金”的第一行。
  • 这正是我所需要的。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多