【发布时间】:2021-09-28 12:55:22
【问题描述】:
今天早上问了一个问题,现在我想问另一种替换方法,因为我正在等待我的老师确认物种名称。
我有一个这样的数据框(真正的df 是通过删除重复的行产生的)
df <- data.frame(name1 = c("a" , "b", "c", "a"),
name2 = c("x", NA, NA, NA),
name3 = c(NA, "b1", "c1", NA),
name4 = c("x", "b1", "c1", "a"))
name1 name2 name3 name4
1 a x <NA> x
2 b <NA> b1 b1
3 c <NA> c1 c1
4 a <NA> <NA> a
如果name4 列中的值与name1 列匹配,我们可以通过调用将a 替换为x 吗?
我不想在这里直接使用和分配x,因为我的数据应该有很多这样的情况。请问有什么建议给我吗? (使用 base-R 对我来说也很好,因为我很想了解更多)
期望的输出
name1 name2 name3 name4
1 a x <NA> x
2 b <NA> b1 b1
3 c <NA> c1 c1
4 a <NA> <NA> x
我对表格的解释和我的期望:
我有 3 列 name1、name2、name3(删除重复行后)。 Name4 列是最后一列,其中包含我想要的前 3 列的值。 name2 列中的值是我使用的第一优先级,然后是 name3 中的值。
在我的第四行中,由于 NA 值出现在 name2 列中,所以我从 name1 列中取了一个“a”。我在想是否可以在不分配 x 的情况下用 x 替换 a
【问题讨论】:
-
您不想显式使用的“x”是否来自name1 有“a”的行中的name2 列?我不明白你想做什么
-
对不起,我想我会混淆别人,我会关闭并问另一个更清楚。
-
您不应该删除许多用户已经花时间给您答案的问题。相反,您应该通过编辑来改进您的问题。
-
您仍然没有回答 cmets 中的问题。
x值来自哪里(如果它不应该被硬编码)?替换值应该遵循什么逻辑? -
所以让我们从一开始就说,我有 3 列 name1、name2、name3(在删除重复的行之后)。 Name4 列是最后一列,其中包含我想要的前 3 列的值。 name2 列中的值是我使用的第一优先级,然后是 name3 中的值