R 删除重复行检查多列中的重复值,并保留不存在NA值的行
我扫描stackoverflow一个多小时以找到解决方案,但失败了。因此,发布问题 我有一个数据帧,需要从中删除重复项,但诀窍是,重复值可以位于两个不同的列中,用于不同的行。我需要删除另一列具有NA值的行 示例数据帧R 删除重复行检查多列中的重复值,并保留不存在NA值的行,r,dplyr,data-manipulation,R,Dplyr,Data Manipulation,我扫描stackoverflow一个多小时以找到解决方案,但失败了。因此,发布问题 我有一个数据帧,需要从中删除重复项,但诀窍是,重复值可以位于两个不同的列中,用于不同的行。我需要删除另一列具有NA值的行 示例数据帧 Act Func Func_2 generate numbers odd generate numbers and generate print <NA> generate column print di
Act Func Func_2
generate numbers odd
generate numbers and
generate print <NA>
generate column print
displays time <NA>
displays date time
displays print time
displays task <NA>
Act Func Func_2
generate numbers odd
generate numbers and
generate column print
displays date time
displays print time
displays task <NA>
Act Func Func_2
生成奇数
生成数字和
生成打印
生成列打印
显示时间
显示日期和时间
显示打印时间
显示任务
由于print在Func和Func_2中都存在,并且两行中的Act值相同,因此我需要删除Func_2中存在NA的行。
但是,如果Act列中的值不同,则需要保留这两行
预期数据帧
Act Func Func_2
generate numbers odd
generate numbers and
generate print <NA>
generate column print
displays time <NA>
displays date time
displays print time
displays task <NA>
Act Func Func_2
generate numbers odd
generate numbers and
generate column print
displays date time
displays print time
displays task <NA>
Act Func Func_2
生成奇数
生成数字和
生成列打印
显示日期和时间
显示打印时间
显示任务
这就是你想要的吗
library(dplyr)
生成数据帧:
a <- c(1, 2, 3, 4)
b <- c(5, 6, NA, 7)
df <- data.frame(a, b)
a在这里试试这个:
df1 %>% group_by(Act) %>% # the following test will be done by group
mutate(test = if_else(Func %in% Func_2,
if_else(is.na(Func_2), FALSE, TRUE),
TRUE)) %>%
#this will create a logical helper column.
filter(test == TRUE) #just for completeness
# A tibble: 6 x 4
# Groups: Act [2]
Act Func Func_2 test
<chr> <chr> <chr> <lgl>
1 generate numbers odd T
2 generate numbers and T
3 generate column print T
4 displays date time T
5 displays print time T
6 displays task <NA> T
df1%>%group_by(Act)%>%
变异(测试=if_else(Func%在%Func_2中),
如果else(is.na(Func_2)、FALSE、TRUE),
TRUE))%>%
#这将创建一个逻辑帮助器列。
过滤器(test==TRUE)#只是为了完整性
#一个tibble:6x4
#团体:法案[2]
Act Func Func_2测试
1生成奇数T
2生成数字和T
3生成列打印T
4显示日期时间T
5显示打印时间T
6显示任务T
看看na.omit()
。顺便说一句:请使用dput()
显示您的数据或数据帧的定义。@jogo您可能知道https://alistaire47.github.io/read.so/
已经。。。但我同意。NinjaR,示例数据帧不适合您的要求,因此这里的混乱是您想要什么。。。(我猜)。为什么不在“act”中添加另一行,该行的值与“generate”的值不同,整个要点应该更清楚…@Tjebo-谢谢你的建议。我理解这种困惑。我已经编辑了这个问题。请你现在调查一下好吗。任何帮助都将是伟大的,因为我仍然被困在这个。非常感谢。工作起来很有魅力。