R:tidyverse选择列值并将其复制到其他列下

彼得·恩顿

在bind_rows多个df(如下所示)之后,我遇到了一个问题

df <- data.frame(sites     = c("a", "b", "c", "a", "b", "c", "a", "b","c", "a", "b","c"),
             name      = c("x1", "x1", "x1", "x2", "x2", "x2", "x3", "x3", "x3", "x4", "x4", "x4"),
             compound1 = c("10", "10", "10", "NA", "NA", "NA", "NA", "NA", "NA", "NA", "NA", "NA" ), 
             compound2 = c("NA", "NA", "NA", "15", "15","15", "NA", "NA", "NA",  "NA", "NA", "NA"), 
             compound3 = c("NA", "NA", "NA", "NA", "NA", "NA", "20", "25", "30",  "NA", "NA", "NA"),
             compound4 = c("NA", "NA", "NA", "NA", "NA", "NA", "NA", "NA", "NA", "40", "22", "23"))  

基本上我希望有以下输出

df2 <- data.frame(sites   c("a", "b", "c", "a", "b", "c", "a", "b","c", "a", "b","c"),
             name       = c("x1", "x1", "x1", "x2", "x2", "x2", "x3", "x3", "x3", "x4", "x4", "x4"),
             conc      = c("10", "10", "10", "15", "15","15","20", "25", "30", "40", "22", "23"))

也就是说,只有三列(站点,名称和新列conc)以及“ conc”列下的所有值

我对如何操作感到迷茫,感谢您的反馈。如果您的帮助使用tidyverse,那就更好了。

谢谢!

万维网

这是一种方法。我们可以先替换"NA"NA,然后再使用coalesce

library(dplyr)

df_out <- df %>%
  mutate(across(starts_with("compound"), .fns = function(x){
    x2 <- ifelse(x %in% "NA", NA_character_, x)
    return(x2)
  })) 

df_comp <- df_out %>%
  select(starts_with("compound")) %>% 
  as.list.data.frame()

df_out <- df_out %>%
  mutate(conc = coalesce(!!!df_comp)) %>%
  select(-starts_with("compound"))

df_out
#    sites name conc
# 1      a   x1   10
# 2      b   x1   10
# 3      c   x1   10
# 4      a   x2   15
# 5      b   x2   15
# 6      c   x2   15
# 7      a   x3   20
# 8      b   x3   25
# 9      c   x3   30
# 10     a   x4   40
# 11     b   x4   22
# 12     c   x4   23

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R:tidyverse选择列值并将其复制到其他列下

来自分类Dev

将 N/A 复制到另一列并将其他行转换为 R 中的数字

来自分类Dev

如果其他列的对应行的值相等(熊猫),则将其复制到该列的空行中

来自分类Dev

Python - 根据文件名将其他 excel 文件中的特定列复制到新的列

来自分类Dev

将文档从视图复制到其他数据库并将其删除

来自分类Dev

Google应用程序脚本可将列值复制到其他工作表

来自分类Dev

如何在R中将10列收集到一列中并将其他10列收集到另一个列中,仅具有tidyverse的计数和频率

来自分类Dev

将公式复制到另一个工作表并将其作为值粘贴到特定列

来自分类Dev

从列中提取文本并将其复制到新列中

来自分类Dev

如何将文件复制到剪贴板并将其粘贴到其他地方?

来自分类Dev

选择行并复制到列

来自分类Dev

在将数据复制到其他列中的同时将行转换为单个列

来自分类Dev

将熊猫中的列值分组并将其他列值制成列表

来自分类Dev

VBA宏脚本:使用vba宏在工作表1的列中查找唯一的值并将其复制到工作表2

来自分类Dev

在其他工作簿中搜索特定工作簿的工作表名称,并将前三列从后者复制到前者

来自分类Dev

如何根据其他三列中的特定值将值从df1中的一列复制到df2?

来自分类Dev

取数据框中一列的前三个单词并将其复制到新列中

来自分类Dev

jQuery将输入值复制到其他形式

来自分类Dev

JavaScript将值optgroup复制到其他输入

来自分类Dev

如何“选择特定数据,仅复制某些列并将其插入到不同的表中?”

来自分类Dev

从Google工作表复制A1值,然后复制到其他Google工作表的B列中的第一行

来自分类Dev

自动将具有匹配列的行复制到其他工作表

来自分类Dev

根据R中的其他列值复制行

来自分类Dev

选择一列并将其数量与其他行相加

来自分类Dev

每当插入新记录时,如何将列值复制到同一数据库表的其他列?

来自分类Dev

重新排序,排除一列并将其他列保留在 R 中?

来自分类Dev

搜索列标题并将标题复制到目标表

来自分类Dev

Ctrl + C复制网页文本-将其他数据复制到剪贴板

来自分类Dev

添加列并将其他字段的默认值设置为

Related 相关文章

  1. 1

    R:tidyverse选择列值并将其复制到其他列下

  2. 2

    将 N/A 复制到另一列并将其他行转换为 R 中的数字

  3. 3

    如果其他列的对应行的值相等(熊猫),则将其复制到该列的空行中

  4. 4

    Python - 根据文件名将其他 excel 文件中的特定列复制到新的列

  5. 5

    将文档从视图复制到其他数据库并将其删除

  6. 6

    Google应用程序脚本可将列值复制到其他工作表

  7. 7

    如何在R中将10列收集到一列中并将其他10列收集到另一个列中,仅具有tidyverse的计数和频率

  8. 8

    将公式复制到另一个工作表并将其作为值粘贴到特定列

  9. 9

    从列中提取文本并将其复制到新列中

  10. 10

    如何将文件复制到剪贴板并将其粘贴到其他地方?

  11. 11

    选择行并复制到列

  12. 12

    在将数据复制到其他列中的同时将行转换为单个列

  13. 13

    将熊猫中的列值分组并将其他列值制成列表

  14. 14

    VBA宏脚本:使用vba宏在工作表1的列中查找唯一的值并将其复制到工作表2

  15. 15

    在其他工作簿中搜索特定工作簿的工作表名称,并将前三列从后者复制到前者

  16. 16

    如何根据其他三列中的特定值将值从df1中的一列复制到df2?

  17. 17

    取数据框中一列的前三个单词并将其复制到新列中

  18. 18

    jQuery将输入值复制到其他形式

  19. 19

    JavaScript将值optgroup复制到其他输入

  20. 20

    如何“选择特定数据,仅复制某些列并将其插入到不同的表中?”

  21. 21

    从Google工作表复制A1值,然后复制到其他Google工作表的B列中的第一行

  22. 22

    自动将具有匹配列的行复制到其他工作表

  23. 23

    根据R中的其他列值复制行

  24. 24

    选择一列并将其数量与其他行相加

  25. 25

    每当插入新记录时,如何将列值复制到同一数据库表的其他列?

  26. 26

    重新排序,排除一列并将其他列保留在 R 中?

  27. 27

    搜索列标题并将标题复制到目标表

  28. 28

    Ctrl + C复制网页文本-将其他数据复制到剪贴板

  29. 29

    添加列并将其他字段的默认值设置为

热门标签

归档