我的数据集包含有关各国三种不同类型的疫苗接种情况的信息:
为了进行比较,我只想保留那些拥有所有三种疫苗数据的国家。我尝试了几种方法(Excel中的VLOOKUP,R中的左联接),但是没有一种方法能获得理想的结果。请告知您是否知道使用Excel或R的任何解决方案。
谢谢!
答案 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可以识别的更有用的内容。