Интересно, как dplyr::filter()
моему DATA
уловить строки для ID
, значение которых Language
когда 'Type!=5F'
и когда 'Type==5F'
меняется с других языков на "English"
?
Например, ID==1
имеет испанский, когда 'Type!=5F'
, и английский, когда 'Type==5F'
. Итак, фильтруем.
Desired_output
ниже.
DATA <- read.table(header=TRUE,text = "
ID Type Year Language
1 1A 1718 spansih
1 1A 1819 spanish
1 5F 1920 English
2 1B 1718 spanish
2 1B 1819 spanish
2 1B 1920 spanish
2 5F 2021 spanish
3 1B 1920 English
3 5F 2021 English")
Desired_output <- read.table(header=TRUE,text = "
ID Type Year Language
1 1A 1718 spansih
1 1A 1819 spanish
1 5F 1920 English")
По идентификатору вы можете проверить строки, в которых Type == "5F" & Language == "English"
и строка выше не использует lag()
, сохраняя всю группу, когда какое-либо значение соответствует условиям, например.
library(dplyr)
DATA |>
filter(any(Type == "5F" & Language == "English" & !lag(Type == "5F" | Language == "English")),
.by = ID)
ID Type Year Language
1 1 1A 1718 spansih
2 1 1A 1819 spanish
3 1 5F 1920 English
Спасибо! Существует проблема. Я обновил свой
DATA
, чтобы показать вам проблему. Ваше решение фиксирует случаи, когда язык всегда остается английским. Пожалуйста, запустите мой обновленныйDATA
, чтобы убедиться, что он не создаетDesired_output
.