我在R中遇到了麻烦,我试图通过使用dplyr包使用带有条件IF-ELSE逻辑的多个Mutations 语句逐步构建一个列.具体地说,我希望根据应用于另一列的各种条件,在我的数据框中创建一个名为‘Issues’的新列.

mutate语句中的每个条件判断行信息是否基于特定条件向"Issues"列添加描述(例如"Missing Address").然而,我在实现"问题"列的顺序构建方面遇到了麻烦.

我试过这样的方法:

  df <- data.frame(
    PreferredName  = "",
    FirstName = c("Mary", "Harold (Harry)", "Ben", "Tristian (Tri)", "Julia"),
    County = c("", "Other", "Warren", "Butler", ""),
    Date = as.Date(2024-02-15),
    Address = c("123 Street", "42 Ave", "", "", "520 Road")
  )

df_cor <- df %>%
  mutate(Issues = ifelse((PreferredName == "" & grepl("\\(", FirstName)), "Preferred Name", "")) %>%
  mutate(Issues = ifelse(((County == "USA" | County == "" | County == "Other" | County == "N/A" )& Date >= as.Date("2023-08-01")), c(Issues, "County"), Issues)) %>%
  mutate(Issues = ifelse((Address == "" & Date >= as.Date("2023-08-01")), c("Address", Issues), Issues))

然而,这并没有像预期的那样奏效.当应该有后续问题被标记时,我得到一个空白列.

我希望有一个名为Issues=c("Address"、"Addresse"、"Address"、"Address")或类似名称的新列.

我非常感谢任何见解或替代方法(理想情况下使用dyplr).

推荐答案

你需要在你的ifelse()中使用paste0().您也可以使用%in%而不是|来进行多个"或"匹配.您还可以将多个语句添加到单个mutate().从您向Issues列添加的内容来看,我猜您是想找出问题,以便更正相应的列?在首选名称的情况下,可以将首选名称从FirstName复制到Preferred Name.如果是这样的话,更新你的问题,包括你的最终目标是什么,我会更新我的答案.如果没有,这个解决方案就好了.

library(dplyr)

df <- data.frame(
  PreferredName  = "",
  FirstName = c("Mary", "Harold (Harry)", "Ben", "Tristian (Tri)", "Julia"),
  County = c("", "Other", "Warren", "Butler", ""),
  Date = as.Date("2024-02-15"),
  Address = c("123 Street", "42 Ave", "", "", "520 Road")
)

df_cor <- df %>%
  mutate(Issues = ifelse((PreferredName == "" & grepl("\\(", FirstName)), 
                         "Preferred Name ", ""),
         Issues = ifelse(County %in% c("USA", "", "Other", "N/A") & 
                           Date >= as.Date("2023-08-01"), 
                         paste0(Issues, "County "), Issues),
         Issues = ifelse((Address == "" & Date >= as.Date("2023-08-01")), 
                         paste0("Address ", Issues), Issues),
         Issues = trimws(Issues))

df_cor
  PreferredName      FirstName County       Date    Address                 Issues
1                         Mary        2024-02-15 123 Street                 County
2               Harold (Harry)  Other 2024-02-15     42 Ave  Preferred Name County
3                          Ben Warren 2024-02-15                           Address
4               Tristian (Tri) Butler 2024-02-15            Address Preferred Name
5                        Julia        2024-02-15   520 Road                 County

R相关问答推荐

如何判断某列中由某些行组成的百分比

带有gplot 2的十字舱口

如何将在HW上运行的R中的消息(错误、警告等)作为批处理任务输出

咕噜中的元素列表:map

如何计算前一行的值,直到达到标准?

将包含卷的底部25%的组拆分为2行

合并DFS列表并将索引提取为新列

在rpart. plot或fancyRpartPlot中使用带有下标的希腊字母作为标签?

比较理论阿尔法和经验阿尔法

QY数据的处理:如何定义QY因素的水平

Rmarkdown::Render vs Source()

R基于变量组合创建新的指标列

在生成打印的自定义函数中,可以通过变量将线型或 colored颜色 设置为NULL吗?

计算来自单独分组的分幅的值的百分位数

如何将宽格式的患者信息数据高效地转换为患者计数的时间序列?

在R中使用ggraph包排列和着色圆

子样本间系数检验的比较

在直方图中显示两个变量

在分面的ggplot2条形图中对条形图进行排序,并省略每组未使用的系数级别

如果y中存在x中的值,则将y行中的多个值复制到相应的x行中