gpt4 book ai didi

r - 如果完整行包含零,则删除某些行

转载 作者:行者123 更新时间:2023-12-04 22:55:14 24 4
gpt4 key购买 nike

这是我的问题的一个例子来标记我的观点。

 Random <- sample(c("A","B","C","D","E","F","G"), size = 100, replace = 
TRUE)
Year <- sample(c(2000,2001,2002,2003,2004,2005), 100, TRUE)
Value <- sample(c(1,2,3,4), 100, TRUE)

data <- data.frame(Random,Year,Value)

所以我想要做的是删除所有在 #Table1 中一年内不改变其值的行,或者至少将#Table2 中的 Random 列中的 Rows 返回给我。为了更好地理解我的问题,我在这个例子中标记了我想要删除的行。

最佳答案

根据您的逻辑,如果值永远不会更改,则应将行作为删除目标。当最小值和最大值相同时,此条件可以表述为真。尝试这个:

df <- data.frame(Random=c("A", "B", "C", "D", "E", "F", "G"),
`2000`=c(1,1,0,2,2,0,3),
`2001`=c(0,1,0,2,3,0,3),
`2002`=c(2,1,0,2,0,1,3),
`2003`=c(1,1,0,2,0,0,3),
`2004`=c(4,1,0,2,1,0,3),
`2005`=c(5,1,0,2,1,0,3), stringsAsFactors=FALSE)

df.target <- df[, !(names(df) %in% c("Random"))]
df[apply(df.target, 1, function(x) min(x)!=max(x)), ]

Random X2000 X2001 X2002 X2003 X2004 X2005
1 A 1 0 2 1 4 5
5 E 2 3 0 0 1 1
6 F 0 0 1 0 0 0

Demo

编辑:

如果您还想删除表 1 中名称与第二个表中被删除的行匹配的行,您可以尝试:
names.rm <- df$Random[apply(df.target, 1, function(x) min(x)==max(x))]
table1[!table1$Random %in% names.rm, ]

关于r - 如果完整行包含零,则删除某些行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50200127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com