簡體   English   中英

在R中提取特定值

[英]extracting specific values in R

我是R編碼的初學者,我在這里有樣本數據。 我試圖提取所有具有2“d7”和一個“d1”的條目以獲得相同的Idvalue數。


Sample   name         Idvalue_number
a       d1                 1
f       d7                 1
b       d7                 1
s       d1                 5
g       d7                 5
r       d7                 5
z       d1                 7
y       d7                 7
d       d1                 7



Expected output         
a   d1  1
f   d7  1
b   d7  1
s   d1  5
g   d7  5
r   d7  5


我試過的一些代碼沒有給我所需的輸出在這里:

d1d7 <- data_ %>%  
  group_by(dvalue_number) %>% 
  filter(n() >= 3 & any(name == first(name)))

有人可以幫我嗎? 提前致謝。

一個選項是根據每個'Idvalue_number'中'd1','d7'的頻率進行filter

library(dplyr)
data_ %>% 
   group_by(Idvalue_number) %>% 
   filter(n() >= 3, sum(name == 'd1') == 1, sum(name == "d7")== 2)
# A tibble: 6 x 3
# Groups:   Idvalue_number [2]
#  Sample name  Idvalue_number
#  <chr>  <chr>          <int>
#1 a      d1                 1
#2 f      d7                 1
#3 b      d7                 1
#4 s      d1                 5
#5 g      d7                 5
#6 r      d7                 5

數據

data_ <- structure(list(Sample = c("a", "f", "b", "s", "g", "r", "z", 
"y", "d"), name = c("d1", "d7", "d7", "d1", "d7", "d7", "d1", 
"d7", "d1"), Idvalue_number = c(1L, 1L, 1L, 5L, 5L, 5L, 7L, 7L, 
7L)), class = "data.frame", row.names = c(NA, -9L))

您可以這樣做的一種方式如下所示。]

library(tidyverse)

#create a dataframe for example
df = data.frame(Sample = c("a", "f", "b", "s", "g", "r", "z", "y", "d"),
                name = c("d1", "d7", "d7", "d1",  "d7", "d7", "d7", "d7","d7"),
                Idvalue_number = c(1, 1, 1, 5, 5, 5, 7, 7, 7))


df %>% group_by(Idvalue_number, name) %>%
  summarise(total = n()) %>% 
  filter(name == "d1" & total == 1 | name == "d7" & total == 2)

  Idvalue_number name  total
           <dbl> <fct> <int>
1              1 d1        1
2              1 d7        2
3              5 d1        1
4              5 d7        2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM