我需要将第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行。
答案 0 :(得分:0)
我们可以使用substring
或substr
在特定位置提取字符串。
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)