r - 如何在R中的数据框中组合两列?

标签 r dataframe

我有一个如下所示的数据框“df”:

Samples Status  last_contact_days_to    death_days_to
Sample1 Alive   [Not Available]       [Not Applicable]
Sample2 Dead    [Not Available]             724
Sample3 Dead    [Not Available]            1624
Sample4 Alive      1569               [Not Applicable]
Sample5 Dead    [Not Available]            2532
Sample6 Dead    [Not Available]            1271

我想合并列 last_contact_days_todeath_days_to在结果中它应该只显示值而不是任何其他字符。如果两列都有字符,则应删除整行。

结果应如下所示:
Samples Status  new_column
Sample2 Dead    724
Sample3 Dead    1624
Sample4 Alive   1569
Sample5 Dead    2532
Sample6 Dead    1271

最佳答案

我们可以更改 [Not Available][Not Applicable]NA并使用 coalesce

library(tidyverse)
df1 %>%
   mutate_at(3:4, 
      funs(replace(., .%in% c("[Not Available]", "[Not Applicable]"), NA))) %>%
   transmute(Samples, Status,
             new_column = coalesce(last_contact_days_to, death_days_to)) %>%
   filter(!is.na(new_column))
#  Samples Status new_column
#1 Sample2   Dead        724
#2 Sample3   Dead       1624
#3 Sample4  Alive       1569
#4 Sample5   Dead       2532
#5 Sample6   Dead       1271
注意:正如@Roland 所建议的,如果第 3 列和第 4 列除了“[不可用]”、“[不适用]”之外只有数字值,则 mutate_at可以改为as.numeric .它将所有非数字元素转换为 NA带有友好的警告,它不会有任何问题
df1 %>%
    mutate_at(3:4, as.numeric) 
    # if the columns are `factor` class then wrap with `as.character`
    # mutate_at(3:4, funs(as.numeric(as.character(.))))
注意:在 OP 的数据集中,这些是 factor类(class)。因此,取消注释上面的代码并使用它而不是直接应用 as.numeric数据
df1 <- structure(list(Samples = c("Sample1", "Sample2", "Sample3", "Sample4", 
"Sample5", "Sample6"), Status = c("Alive", "Dead", "Dead", "Alive", 
"Dead", "Dead"), last_contact_days_to = c("[Not Available]", 
"[Not Available]", "[Not Available]", "1569", "[Not Available]", 
"[Not Available]"), death_days_to = c("[Not Applicable]", "724", 
"1624", "[Not Applicable]", "2532", "1271")), .Names = c("Samples", 
"Status", "last_contact_days_to", "death_days_to"), 
 class = "data.frame", row.names = c(NA, 
-6L))

关于r - 如何在R中的数据框中组合两列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51727185/

相关文章:

python - 数据帧结构操作

python - 如何有效地映射 pandas 中的新变量

java - Java 中是否有 anova.lm() 的等效函数?

R data.table 按组和条件连接/子集/匹配

r - ggplot 中的直方图在 X 轴上不是从零开始

python - 如何融化 0 和 1 的数据帧并仅保留 1

python - pyspark在某些条件下选择窗口上的第一个元素

r - 使用匹配行上的另一个数据帧更新数据帧,例如使用 join 语句进行 SQL 更新

r - 使用 tufte-book 在 bookdown 中设置 PDF 输出的纸张尺寸

algorithm - 在 Scala 中实现成对线性距离