我试图运行一个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个唯一ID
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"}
}
答案 0 :(得分:0)
反转测试以查看remove_this
的内容是否在行中。
df_2$output <- NA # initialize the column
for(i in 1:nrow(df_2)){
df_2$output[i] <- ifelse(all(remove_this %in% df_2[i,]), 'Yes', 'No')
}
答案 1 :(得分:0)
您不需要创建for循环:
import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View, ImageBackground} from 'react-native';
type Props = {};
export default class App extends Component<Props> {
render() {
return (
<View>
<ImageBackground source={require(./Images/background.jpg)} style={styles.backgroundContainer}>
<Text> Here Background Image </Text>
</ImageBackground>
</View>
);
}
}
const styles = StyleSheet.create({
backgroundContainer: {
flex: 1,
width:'100%',
height:'100%',
},
});
remove_this <- c('BBB','CCC') df_remove <- apply(df_2, 1, function(x) !any(x %in% remove_this)) df_2 %>% mutate(output = c("No", "Yes")[df_remove + 1L])
“技巧”是将# A tibble: 5 x 6
ID `1` `2` `3` `4` output
<chr> <chr> <chr> <chr> <chr> <chr>
1 1 CCC BBB NA NA No
2 2 AAA NA NA NA Yes
3 3 AAA EEE BBB NA No
4 4 AAA DDD NA NA Yes
5 5 EEE EEE BBB CCC No
的逻辑值FALSE
和TRUE
转换为整数索引,该整数索引用于对向量df_remove
进行子集化。