[英]Collapsing Rows in Longitudinal Dataset
我有一個數據集,其中有多行都對應於基線度量。 我想通過記錄ID折疊這些行,以便每個人只有一行用於基准度量。 這意味着我必須折疊所有變量,其中一些是字符變量。 我該怎么做呢? 這是我嘗試過的:
df.test %>% group_by(id) %>% filter(time == 0) %>%
summarise_all(., collapse=", ")
我正在使用的示例數據框如下所示:
data.frame(id = rep(99, 5), time = c(rep(0, 3), 3, 6), v1 = c("blk", NA, NA, 2, 3), v2 = c(NA, 1, NA, 4, 5), v3 = c(NA, NA, 1, 6, 7))
我需要它看起來像這樣:
data.frame(id = rep(99, 3), time = c(rep(0, 1), 3, 6), v1 = c("blk", 2, 3), v2 = c(1, 4, 5), v3 = c(1, 6, 7))
我不知道摘要是否是在此處使用的正確功能。 基本上,我遇到的一個問題是字符的求和,我認為這就是為什么總結不能真正起作用的原因。 理想情況下,我真正想做的就是將所有時間= 0的行中的信息組合在一起,以使每個唯一ID的時間都為0。
(對不起,我不確定如何使data.frame命令打印數據框嗎?)
請幫助!
編輯:示例2
data.frame(id = c(rep(99,5), 100, 101, 101), time = c(rep(0, 3), 3, 6, 0, 0, 0), character = c(NA, NA, "blk", rep(NA, 5)), binary = c(1, rep(NA, 5), 0, NA), continuous = c(NA, NA, 2.29, rep(NA, 5)))
這與我的數據看起來很接近。 我可以說不起作用的是以下內容:
1)丟失了字符變量2)在二進制變量中丟失了0(即使使用!= is.na(。)而不是!= 0 2a),這是原子的,我將其更改為因數,現在看來可行3)連續變量2.29丟失了4)有趣的是,這里未顯示的是似乎保留了非0的整數值,但整數全部消失了-這是因為如果結構是原子的,則無法讀取整數嗎?
結論:我認為我需要更改atomic的所有值(它們從SPSS引入r)? 我將在此期間嘗試一下。
edit2:問題不是數字還是原子。 我把一切都變成了數字,但整數仍然不顯示。
dplyr::collapse
並不想讓您這樣做,請閱讀?dplyr::collapse
。 您需要傳遞給summarise_all
一個函數,該函數從每個組中選擇要保留的值。 我在這里推斷您要擺脫所有0
值。 盡管在這里無關緊要,但如果存在多個非零值以防止錯誤,我還可以使用first
來獲取每一列中每個組的第一個值。 您應該檢查數據以確保其具有此布局。
library(dplyr)
tbl <- data.frame(id = rep(99, 5), time = c(rep(0, 3), 3, 6), v1 = c("blk", 0, 0, 2, 3), v2 = c(0, 1, 0, 4, 5), v3 = c(0, 0, 1, 6, 7))
tbl %>%
group_by(id, time) %>%
summarise_all(~ .[. != 0] %>% first())
#> # A tibble: 3 x 5
#> # Groups: id [1]
#> id time v1 v2 v3
#> <dbl> <dbl> <fct> <dbl> <dbl>
#> 1 99 0 blk 1 1
#> 2 99 3 2 4 6
#> 3 99 6 3 5 7
由reprex軟件包 (v0.2.1)創建於2019-04-24
這個怎么樣?
temp <-df.test%>%group_by(id)%>%filter(time == 0)%>%summarise_all(funs(paste0(。,collapse =“ _”))))
希望這是您想要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.