首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提取具有正负值的同一行

如何提取具有正负值的同一行
EN

Stack Overflow用户
提问于 2019-07-23 20:47:19
回答 2查看 1.1K关注 0票数 2

我正在尝试获取行,这些行在一列中有一些值,而在另一列中有正和负值。输入是下面的数据框架

代码语言:javascript
复制
 data <- data.frame(X = c(1,3,5,7,7,8,9,10,10,11,11,12,12),
                   Y = sample(36476545:36476557),
                   timepoint = c(0,1,0,-0.31,1,1,1,1,-1,1,1,1,1)
                   )

输出如下所示

代码语言:javascript
复制
X        Y timepoint
4  7 36476557     -0.31
5  7 36476545      1.00
8 10 36476556      1.00
9 10 36476548     -1.00

我在看this link,但不是我要找的东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-23 20:49:34

在按“X”进行分组后,将具有负数和正时点的filter取“时间点”的sign,得到不同的元素数(n_distinct)为2(假设没有零)

代码语言:javascript
复制
library(dplyr)
data %>% 
   group_by(X) %>% 
   filter(n_distinct(sign(timepoint)) == 2)
# A tibble: 4 x 3
# Groups:   X [2]
#      X        Y timepoint
#  <dbl>    <int>     <dbl>
#1     7 36476547     -0.31
#2     7 36476556      1   
#3    10 36476549      1   
#4    10 36476557     -1   

注意:'Y‘值是不同的,因为示例创建时没有set.seed

如果也有零

代码语言:javascript
复制
data %>% 
       group_by(X) %>%
       filter(all(c(-1, -1) %in% sign(timepoint)))

或者将base Rave结合使用

代码语言:javascript
复制
data[with(data, ave(sign(timepoint), X, FUN = function(x) length(unique(x))) == 2),]

或另一个带有base Rtable选项

代码语言:javascript
复制
subset(data, X %in% names(which(rowSums(with(subset(data, 
      timepoint != 0), table(X, sign(timepoint))) > 0) == 2)))
票数 4
EN

Stack Overflow用户

发布于 2019-07-24 01:28:25

在基R中,我们可以使用ave并选择至少有一个大于0的timepoint值和一个小于0的timepoint值的组。

代码语言:javascript
复制
data[with(data, ave(timepoint > 0, X, FUN = function(x) any(x) & any(!x))), ]

#   X        Y timepoint
#4  7 36476553     -0.31
#5  7 36476551      1.00
#8 10 36476556      1.00
#9 10 36476554     -1.00

dplyr中,这将是

代码语言:javascript
复制
library(dplyr)

data %>%
  group_by(X) %>%
  filter(any(timepoint > 0) & any(timepoint < 0))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57171967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档