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