[英]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.