簡體   English   中英

Pivot 加寬表 dyplr R

[英]Pivot Wider table dyplr R

我有我正在旋轉的數據並且幾乎完美。 數據正確旋轉,每個 sp_BLDG 給我一行,然后是跨列的年齡和性別。 我想要對每個事件進行總計數,但相反,我在每一列中都有一個列表。 示例:我有 c(“Male”, “Male”, “Male”),而不是家里的“3”個成年男性。 我認為問題在於 pivot 數據是字符(成人、男性、女性、兒童等)。 警告標志告訴我需要使用 values_,我從 help() 中的示例中嘗試過。 任何建議都會很棒。

tbl_patient <- merge.all %>% 
 select(sp_BLDG, age, gender) %>%  
 pivot_wider(names_from = c("age", "gender"), values_from = c("age", "gender")) %>% 
 select(-age_Senior_Unknown, -gender_Senior_Unknown)```

Warning Messages
Warning messages:
1: Values are not uniquely identified; output will contain list-cols.
* Use `values_fn = list` to suppress this warning.
* Use `values_fn = length` to identify where the duplicates arise
* Use `values_fn = {summary_fun}` to summarise duplicates 
2: Values are not uniquely identified; output will contain list-cols.
* Use `values_fn = list` to suppress this warning.
* Use `values_fn = length` to identify where the duplicates arise
* Use `values_fn = {summary_fun}` to summarise duplicates 

好的,所以我回到了這段代碼的繪圖板上。 是的,旋轉是我想要做的,但這不適用於我擁有的數據。 一位同事曾經對我說,為了編碼,你必須像電腦一樣思考。

考慮到這一點,我基本上將新列創建為二進制文件,然后將其全部匯總。 所有帶有 dyplr 的工具。 可能有更短的方法可以做到這一點,我仍然很想聽聽任何建議。

#在家庭級別生成新的患者表

tbl_patient <- merge.all %>% 
filter(age != "Senior") %>% 
select(sp_BLDG, age, gender) %>% 
mutate(male_adult =ifelse(age == "Adult" & gender == "Male",1,0), male_child =ifelse(age == "Child" & gender == "Male",1,0), female_adult =ifelse(age == "Adult" & gender == "Female",1,0), female_child =ifelse(age == "Child" & gender == "Female",1,0)) %>% 
group_by(sp_BLDG) %>% 
summarise(across(where(is.numeric), sum)) %>% 
mutate(patient_id = seq_len(n())) %>% 
select(patient_id, everything())
患者編號 sp_BLDG 男成人 男童 女成人 女童
1 tc01_100001 8 0 3 1
2 tc01_100002 1 0 0 0
3 tc01_100003 1 0 0 0

暫無
暫無

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

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