r - R:将多个变量合并为一个(一些重叠)
问题描述
我正在尝试将数据集中的多行合并为一个。我想在数据可用的地方填写 NA,但在有多个条目可用时保留各种条目。
数据结构如下:
data.frame(ID = c(1,2,3,4), D_1=c("data1",NA,NA,"data1"), D_2=
c(NA,"data2",NA,NA), D_3 = c("data3",NA,"data3",NA), D_4 =
c("data4","data4",NA,"data4"), FACT = c("A","B","C","D"))
我发现工作的方法要求列是字符列,所以(我的列也是字符):
dat$D_1 <- as.character(dat$D_1)
dat$D_2 <- as.character(dat$D_2)
dat$D_3 <- as.character(dat$D_3)
dat$D_4 <- as.character(dat$D_4)
期望的输出:我想要一个列,我们称它为“D”,它将包含所有可用数据:
Dat$D = (`data1, data3, data4`, `data2, data4`, `data3`, `data1, data4`)
我用过:
library(dplyr)
dat <- dat %>%
mutate(D = coalesce(D_1, D_2, D_3, D_4))
这是结果:
dat$D = (data1, data2, data3, data1)
我也尝试过tidyverse
没有运气的功能:
library(tidyverse)
dat <- dat1 %>% gather(2, 3) %>%
filter(value) %>%
group_by(name) %>%
summarise(color=paste(key,collapse=",")) %>%
right_join(dat1)
这给了我一个错误:
Error in filter_impl(.data, quo) :
Evaluation error: object 'value' not found.
In addition: Warning message:
attributes are not identical across measure variables;
they will be dropped
也试过:
D <- with(dat, pmax(D_1, D_2, D_3, D_4))
结果列具有所有 NA
谢谢
解决方案
df = data.frame(
ID = c(1, 2, 3, 4),
D_1 = c("data1", NA, NA, "data1"),
D_2 = c(NA, "data2", NA, NA),
D_3 = c("data3", NA, "data3", NA),
D_4 = c("data4", "data4", NA, "data4"),
FACT = c("A", "B", "C", "D"),
stringsAsFactors = FALSE # initial conversion to characters
)
df
# ID D_1 D_2 D_3 D_4 FACT
# 1 1 data1 <NA> data3 data4 A
# 2 2 <NA> data2 <NA> data4 B
# 3 3 <NA> <NA> data3 <NA> C
# 4 4 data1 <NA> <NA> data4 D
uniqueData <- unique(c(df$D_1, df$D_2, df$D_3, df$D_4)) # concatenation in vector
uniqueData
# [1] "data1" NA "data2" "data3" "data4"
uniqueDataNoNA <- uniqueData[!is.na(uniqueData)] # NA removing
uniqueDataNoNA
# [1] "data1" "data2" "data3" "data4"
推荐阅读
- chart.js - 由于标签过于紧凑,如何修复 X 轴中的网格线数量
- python - 我需要帮助在 python 中导航 api
- python - Matplotlib:更改日期时间刻度会使绘图消失
- go - 作为 systemd 服务运行的程序拒绝连接
- reactjs - React Enzyme - 修改浅渲染功能组件的内部结构
- sql-server - SQL Server:将查询结果合并到一行
- parameters - 如何将计算的度量值拉入 PBI 中的“新表”
- gcc - 没有原型的静态函数(AIX 编译器允许,gcc 不允许)
- arrays - 在 React 中合并对象数组
- python - 多列数据帧到字典的快速转换