簡體   English   中英

如何在 R 中獲得 Ns 的 aa 頻率

[英]How to get a a frequency of Ns in R

這是我的部分數據

df<-read.table (text="  Colour Time1    Time2   Time3   Time4   Time5   Time6
Yellow  N   Y   N   N   N   Y
Red Y   N   N   N   N   Y
Yellow  N   N   N   N   N   Y
Red N   N   N   Y   Y   Y
Yellow  N   N   N   N   N   Y
Red Y   N   N   N   N   Y
Yellow  N   Y   N   N   Y   Y

", header=TRUE)

我想得到以下結果:

Time    Yellow  Red
Time1   4   1
Time2   2   3
Time3   4   3
Time4   4   2
Time5   3   2
Time6   0   0

如您所見,我想計算每次的N個數。 例如,時間 1 黃色只有 4 N,紅色只有 1 N。 我認為我們需要使用 group_by 然后對 Ns 的頻率進行變異,但我不清楚如何做到這一點。

一個選項是在“時間”列上使用pivot_longer重塑為“long”格式,然后使用 pivot_wider 將其重塑為“wide”, pivot_wider' while specifying the values_fn to get the總和,即“N”的計數

library(dplyr)
library(tidyr)
df %>% 
  pivot_longer(cols = starts_with('Time'), names_to = 'Time') %>% 
  pivot_wider(names_from = Colour, values_from = 'value',
     values_fn = function(x) sum(x == 'N'))

-輸出

# A tibble: 6 x 3
  Time  Yellow   Red
  <chr>  <int> <int>
1 Time1      4     1
2 Time2      2     3
3 Time3      4     3
4 Time4      4     2
5 Time5      3     2
6 Time6      0     0

或者across summarise “時間”列進行分組,然后transpose output

library(data.table)
 df %>% 
     group_by(Colour) %>% 
     summarise(across(everything(), ~ sum(. =='N'))) %>%
     data.table::transpose(make.names = 'Colour', keep.names = 'Time')

-輸出

   Time Red Yellow
1 Time1   1      4
2 Time2   3      2
3 Time3   3      4
4 Time4   2      4
5 Time5   2      3
6 Time6   0      0

暫無
暫無

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

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