在R语言中按列筛选Data Frame:根据指定行值提取列
按指定行的条件筛选DataFrame的列(R语言)
没问题,在R里按行的条件来筛选列其实非常直观,我用你的示例数据来演示两种常见场景:
首先,先还原你的示例数据框:
# 创建示例DataFrame DF <- data.frame( vec1 = c("a", "b", "c", 1), vec2 = c("aa", "bb", "cc", 1), vec3 = c("d", "e", "f", 2), stringsAsFactors = FALSE # 避免因子类型导致的比较问题 )
场景1:提取第4行值为1的所有列
我们可以先获取第4行的所有值,然后判断每一列是否等于1,再用这个逻辑结果来筛选列:
# 筛选第4行值为1的列 selected_cols <- DF[, DF[4, ] == 1] selected_cols
运行结果:
vec1 vec2 1 a aa 2 b bb 3 c cc 4 1 1
场景2:提取第4行值不为1的所有列
只需要把判断条件改成不等于!=即可:
# 筛选第4行值不为1的列 other_cols <- DF[, DF[4, ] != 1] other_cols
运行结果:
vec3 1 d 2 e 3 f 4 2
补充说明
如果你的数据框里存在因子类型的列,直接用==比较可能会出问题,这时候可以先把第4行的值转换成字符类型再比较,确保兼容性:
# 兼容因子类型的写法 selected_cols <- DF[, as.character(DF[4, ]) == "1"]
内容的提问来源于stack exchange,提问作者Stefania Axo
相关产品推荐
相关产品推荐

