通过group by和case检查r中的非NA进行突变
我正在尝试使用group by category插入基于非NA条件的列文本,并使用下面的代码键入R。Test1是生成的数据帧。但分组讨论并没有发生通过group by和case检查r中的非NA进行突变,r,mutate,R,Mutate,我正在尝试使用group by category插入基于非NA条件的列文本,并使用下面的代码键入R。Test1是生成的数据帧。但分组讨论并没有发生 Category=c("A","A","A","B","B","B") Type=c("P","P","R","S","S",&qu
Category=c("A","A","A","B","B","B")
Type=c("P","P","R","S","S","S")
Col1=c("ABCD","","","","wxyz","")
Col2=c("","","MTNL","","","")
Col3=c("","PQRS","","","","")
Col4=c("","","","","","")
Col5=c("","","","","","")
Col6=c("","","","","","EFGH")
Test=data.frame(Col1,Col2,Col3,Col4,Col5,Col6)
Text=c("PQRS","PQRS","MTNL","EFGH","EFGH","EFGH")
Test1=data.frame(Col1,Col2,Col3,Col4,Col5,Col6,Text)
Test1=Test %>%
group_by(Category, Type) %>%
mutate(
Text = case_when(
!is.na(`Col6`) ~ `Col6`,
!is.na(`Col5`) ~ `Col5`,
!is.na(`Col4`) ~ `Col4`,
!is.na(`Col3`) ~ `Col3`,
!is.na(`Col2`) ~ `Col2`,
!is.na(`Col1`) ~ `Col1`,
TRUE ~ as.character(NA)
)
)
有人能帮我解决这个问题吗您有空值,而不是
NA
值,因此使用is.NA
检查将不起作用。你应该做:
library(dplyr)
Test %>%
group_by(Category, Type) %>%
mutate(
Text = case_when(
Col6 != '' ~ Col6,
Col5 != '' ~ Col5,
Col4 != '' ~ Col4,
Col3 != '' ~ Col3,
Col2 != '' ~ Col2,
Col1 != '' ~ Col1,
TRUE ~ NA_character_
)
)
# Category Type Col1 Col2 Col3 Col4 Col5 Col6 Text
# <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#1 A P "ABCD" "" "" "" "" "" ABCD
#2 A P "" "" "PQRS" "" "" "" PQRS
#3 A R "" "MTNL" "" "" "" "" MTNL
#4 B S "" "" "" "" "" "" NA
#5 B S "wxyz" "" "" "" "" "" wxyz
#6 B S "" "" "" "" "" "EFGH" EFGH
数据
Test=data.frame(Category, Type, Col1,Col2,Col3,Col4,Col5,Col6)
如何处理单元格中的NA值而不是空白值的相同问题?在
摘要中
将此部分~.x[.x!=''][1])
更改为~NA.ommit(.x)[1]
非常感谢。这个解决方案非常有效@罗纳克沙阿
Test=data.frame(Category, Type, Col1,Col2,Col3,Col4,Col5,Col6)