【问题标题】:How to create an IF statement in R to trim the final character of cell如何在 R 中创建一个 IF 语句来修剪单元格的最后一个字符
【发布时间】:2021-10-14 21:14:28
【问题描述】:

我有一个问题,我连接了由", " 分隔的两个单元格。但是,如果串联中的第二个单元格为空白,则仍会显示分隔符。

我想知道我是否可以制作一个 IF 语句来输出结果

IF df[2,4] ENDS (", ") THEN {function to trim the comma off} ELSE df[2,4]

假设我有以下内容:

letters <- c("A", " ", "C")
numbers <- c(1, 2, 3)
names <- c("Matt", "Mark", "Luke")

df <- data.frame(letters, numbers, names)

df$concat <- ""

df[1,4] <- paste(df[1,3], df[1,1], sep = ", ")
df[2,4] <- paste(df[2,3], df[2,1], sep = ", ")
df[3,4] <- paste(df[3,3], df[3,1], sep = ", ")

导致:

  letters numbers names  concat
1       A       1  Matt Matt, A
2               2  Mark Mark,  
3       C       3  Luke Luke, C     

所以我想做的是说IFconcat 列中的任何文本以, 结尾,然后省略逗号

【问题讨论】:

    标签: r if-statement trim


    【解决方案1】:

    只有当letters 不为空时,您才可以使用ifelsepaste 这两列。

    df <- transform(df, concat = ifelse(letters != ' ', 
                         paste(names, letters, sep = ','), names))
    df
    
    #  letters numbers names concat
    #1       A       1  Matt Matt,A
    #2               2  Mark   Mark
    #3       C       3  Luke Luke,C
    

    如果数据集已经创建,您可以使用 trimws 修剪最后一个逗号和空格。

    df$concat <- trimws(df$concat, whitespace = '[\\s,]')
    

    【讨论】:

    • 假设我想简单地删除最后一个字符IF 它是特定字符串中的逗号?有这个功能吗?
    • df$concat &lt;- trimws(df$concat, whitespace = '[\\s,]')怎么样?
    • 效果很好!!也就是说,“在末尾修剪空格,但我将空格定义为逗号”?
    • 它是一个空格和一个逗号。 \\s 用于空格。
    【解决方案2】:

    作为最后一步,您可以删除剩余的字符:

    library(tidyverse)
    
    data.frame(
      letters = c("A", " ", "C"),
      numbers = c(1, 2, 3),
      names = c("Matt", "Mark", "Luke")
    ) %>%
      mutate(concat = str_c(names, letters, sep = ", ") %>%
               str_remove(",\\s+$"))
    #>   letters numbers names  concat
    #> 1       A       1  Matt Matt, A
    #> 2               2  Mark    Mark
    #> 3       C       3  Luke Luke, C
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 2021-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多