Я пытаюсь запустить цикл for, чтобы проверить, содержат ли какие-либо мои строки определенный набор значений. Я уже знаю, что вы можете просто применить функцию для удаления набора из кадра данных, но я хочу знать, как запустить цикл for. Спасибо!
Это мой фрейм данных:
df <- as.data.frame(matrix(NA, nrow = 12, ncol = 3))
df$V1 <- c('1','1','2','3','3','3','4','4','5','5','5','5')
df$V2 <- c('CCC','BBB','AAA','AAA','EEE','BBB','AAA','DDD','EEE','EEE','BBB','CCC')
df$V3 <- c(100,90,80,85,66,98,62,74,56,85,77,66)
colnames(df) <- c('ID','Secondary_ID','Number')
Группировка данных, поэтому в строке есть только 1 уникальный идентификатор
library(dplyr)
library(tidyr)
df_2 <- df%>%
group_by(ID)%>%
summarise(Key_s = paste0(Secondary_ID, collapse = ','))%>%
separate(Key_s, into = c('1','2','3','4'))
Я знаю, что вы можете удалить конкретный набор следующим образом:
remove_this <- c('BBB','CCC')
df_remove <- apply(df_2, 1, function(x) !any(x %in% remove_this))
final_dataframe <- df_2[df_remove,]
Я пытаюсь запустить цикл for, который создает другой столбец с именем output, и если он содержит определенный набор, кроме «Да», иначе «Нет».
Примерно так:
output <- as.character(nrow(df_2))
for(i in 1:nrow(df_2)){
if(df_2[i,] %in% remove_this){
df_2$output <- "Yes"
}else{df_2$output <- "No"}
}