You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R语言中基于现有数据框创建提取动物名称的新列F

提取每行唯一非空值创建新列F的方法

针对你的数据框,每行仅包含一个非空的动物名称,其余均为空字符串,以下是几种简洁的实现方式:

基础R实现(无需额外包)

用apply逐行遍历,筛选出非空元素:

df$F <- apply(df, 1, function(row) row[row != ""])

dplyr包实现

如果使用tidyverse生态,用行操作快速提取:

library(dplyr)

df <- df %>%
  rowwise() %>%
  mutate(F = c_across(A:E)[c_across(A:E) != ""]) %>%
  ungroup()

tidyr+dplyr组合实现(宽转长思路)

适合更复杂的类似场景,先转长格式筛选再合并:

library(tidyr)
library(dplyr)

df <- df %>%
  mutate(row_num = row_number()) %>%
  pivot_longer(A:E, values_to = "F") %>%
  filter(F != "") %>%
  select(row_num, F) %>%
  left_join(df %>% mutate(row_num = row_number()), by = "row_num") %>%
  select(-row_num) %>%
  relocate(F, .after = last_col())

结果示例

执行后df的F列会正确提取每行的动物名:

A    B     C    D     E      F
1  dog          <NA> <NA> <NA>   dog
2 cat           <NA> <NA> <NA>   cat
3               zebra <NA> <NA> zebra
4                bird <NA> <NA>  bird
5                   mouse <NA> mouse

注:若创建df时空字符串未被转为NA,可在创建时添加stringsAsFactors = FALSE参数保持原格式

内容的提问来源于stack exchange,提问作者always.learning

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 07:34:56