如何提取R数据框中各列非NA值对应的人名?
提取数据框各列非NA值对应的人名
数据框定义
name <- c("luis", "John", "Leo") a1 <- c("a","b",NA) a2 <- c("c",NA,"d") a3 <- c(NA,"d","e") df <- data.frame(name, a1, a2, a3)
解决方案代码
# 若未安装stringr包,先运行 install.packages("stringr") library(stringr) # 遍历目标列,筛选非NA行对应的人名并格式化首字母 col_results <- lapply(df[, -1], function(col) { valid_names <- df$name[!is.na(col)] str_to_title(valid_names) }) # 按要求格式输出结果 for (col in names(col_results)) { quoted_names <- paste0('"', col_results[[col]], '"', collapse = ", ") cat(paste0(col, ": ", quoted_names, "\n")) }
运行结果
a1: "Luis", "John" a2: "Luis", "Leo" a3: "John", "Leo"
注:您提供的期望结果中a2对应的"Leon"应为笔误,原数据中对应有效行的名字是Leo,故修正为此结果。
内容的提问来源于stack exchange,提问作者Johan
相关产品推荐
相关产品推荐

