r - R中数据框中条件的单独列

标签 r dplyr tidyverse

我认为我的图像可能会传达 90% 的问题。我的尝试是我在下面发布的内容:(当 ColB 包含“Sep”时,仅将最后一次出现的/分开)

df <- structure(list(ColA = c("abc/def", "bcd/efg", "def/ghj/yes", 
"fet/hjk/yes"), ColB = c("sep", "no", "sep", "no")), class = "data.frame", row.names = c(NA, 
-4L))

library(tidyverse)
df %>%
mutate(across(str_detect(ColB,"sep")~separate(ColA,into=c("A1","A2"),sep="/",
TRUE ~ NA))

Problem & desire output

最佳答案

使用 extract 我们可以将数据分成不同的列,如果 colB != 'sep 则将值转换为 NA

library(dplyr)  
library(tidyr)

df %>%
  extract(ColA, c('A1', 'A2'), '(.*)/(.*)', remove = FALSE) %>%
  mutate(across(A1:A2, ~replace(., ColB != 'sep', NA)))

#         ColA      A1   A2 ColB
#1     abc/def     abc  def  sep
#2     bcd/efg    <NA> <NA>   no
#3 def/ghj/yes def/ghj  yes  sep
#4 fet/hjk/yes    <NA> <NA>   no

关于r - R中数据框中条件的单独列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67759480/

相关文章:

text - 为什么字段分隔符必须只有一个字节?

r - 在 R 中的数学比较符号处拆分字符向量

r - 使用 R 从具有可见中断的大系列中提取迷你系列(绘制时)

r - 如何过滤任何列中的非零行

r - 如何在 dplyr::across() 中使用 n() 按组计算行数?

r - 加载 tidyverse 时出错 : package or namspace load failed

r - 通过使用 .$ 和 .[ ] 调用值来执行计算

r - 用于约束矩阵计算的循环

r - 如何在dplyr中将多个列名作为输入传递给group_by

r - dplyr::group_by() 具有多个变量但不是交集