在Excel中保留几列中匹配的行

时间:2018-10-03 03:53:40

标签: r excel

我的数据集包含有关各国三种不同类型的疫苗接种情况的信息:

Unfortunately I can't attach a screenshot

为了进行比较,我只想保留那些拥有所有三种疫苗数据的国家。我尝试了几种方法(Excel中的VLOOKUP,R中的左联接),但是没有一种方法能获得理想的结果。请告知您是否知道使用Excel或R的任何解决方案。

谢谢!

3 个答案:

答案 0 :(得分:1)

您在正确的轨道上。尝试嵌套dplyr::inner_join()

library(dplyr)

df <- read.table(text = "Country    vacc1   Country.1   vacc2   Country.2   vacc3
Afghanistan 0.30 Afghanistan    0.50    Afghanistan 2.45
Armenia 2.80    Armenia 3.90    Lebanon 0.93
Azerbaijan  4.70 Azerbaijan 1.08 Bahrain    0.94
Lao_PDR 1.50    Bahrain 8.20 Bangladesh 0.39", header = T, stringsAsFactors = F)

inner_join(df[,1:2], df[,3:4], by = c("Country" = "Country.1")) %>%
  inner_join(df[,5:6], by = c("Country" = "Country.2"))

#       Country vacc1 vacc2 vacc3
# 1 Afghanistan   0.3   0.5  2.45

请记住,R不允许重复的列名,因此请检查它如何处理多个Country列。

答案 1 :(得分:0)

在R中: 假设您已将文件导入到名为data(带有read.xls()或类似名称)的变量中。使用这个:

noNAsIndices <- !is.na(data[[2]]) | is.na(data[[4]]) | is.na(data[[6]])
data <- data[which(noNAsIndices), ]

答案 2 :(得分:0)

我希望我能正确地解释这一点,但是,如果一个国家连续出现三次,这意味着它具有每种疫苗类型(例如第1、11和15行)的数据吗?如果是这样,您可以使用像这样的公式:

=IFNA(IF(VLOOKUP(A2,C:C,1,FALSE)=VLOOKUP(A2,E:E,1,FALSE),"it's in all three columns"),"it's not")

并复制下来。显然,您将这些文本字符串更改为R可以识别的更有用的内容。