簡體   English   中英

縱向數據集中的行折疊

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

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