选择第一个字母并进行比较

时间:2019-09-19 00:29:06

标签: r frameworks

我需要将第1列中的第一个字母与3中的第一个字母进行比较,并将第1列中的最后一个字母与第4列中的第一个字母进行比较,并在两者均为真时显示结果。示例数据:

column1 <- c("lorem", "ipsum", "dolor")
column2 <- c("one","two","three")
column3 <- c("lello", "world","hello")
column4 <- c("mo","me","ri")
data.frame(column1, column2, column4)

由于第一个观察值满足两个条件,因此结果数据框应仅包含第1行。

1 个答案:

答案 0 :(得分:0)

我们可以使用substringsubstr在特定位置提取字符串。

df$match <- with(df, substring(A, 1, 1) == substring(C, 1, 1) & 
                     substring(A, nchar(A)) == substring(D, 1, 1))

df
#      A      B        C     D match
#1  NINE ABCDEF NEW YORK EAGLE  TRUE
#2   TWO  ADSDD   LONDON   DOG FALSE
#3 THREE ASWERR    TOKYO   CAT FALSE

如果我们想将这些观察结果作为子集而不是添加新列,则可以使用subset

subset(df, substring(A, 1, 1) == substring(C, 1, 1) & 
           substring(A, nchar(A)) == substring(D, 1, 1))

#     A      B        C     D
#1 NINE ABCDEF NEW YORK EAGLE

数据

考虑样本数据

df <- data.frame(A = c("NINE", "TWO", "THREE"), B = c("ABCDEF", "ADSDD", "ASWERR"), 
                 C = c("NEW YORK", "LONDON", "TOKYO"), D = c("EAGLE", "DOG", "CAT"), 
                 stringsAsFactors = FALSE)