第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

收集多組列

收集多組列

慕后森 2019-06-26 13:11:48
收集多組列我有一項在線調查的數(shù)據(jù),在調查中,被調查者反復回答1到3次問題。調查軟件(Qualtrics)將這些數(shù)據(jù)記錄在多個列中,也就是說,調查中的Q3.2將包含列。Q3.2.1., Q3.2.2.,和Q3.2.3.:df <- data.frame(   id = 1:10,   time = as.Date('2009-01-01') + 0:9,   Q3.2.1. = rnorm(10, 0, 1),   Q3.2.2. = rnorm(10, 0, 1),   Q3.2.3. = rnorm(10, 0, 1),   Q3.3.1. = rnorm(10, 0, 1),   Q3.3.2. = rnorm(10, 0, 1),   Q3.3.3. = rnorm(10, 0, 1))# Sample data    id       time    Q3.2.1.     Q3.2.2.    Q3.2.3.     Q3.3.1.    Q3.3.2.     Q3.3.3.1   1 2009-01-01 -0.2059165 -0.29177677 -0.7107192  1.52718069 -0.4484351 -1.215506002   2 2009-01-02 -0.1981136 -1.19813815  1.1750200 -0.40380049 -1.8376094  1.035884823   3 2009-01-03  0.3514795 -0.27425539  1.1171712 -1.02641801 -2.0646661 -0.35353058...我想將所有QN.N*列合并成整潔的單個QN.N列,最終得到如下的結果:   id       time loop_number        Q3.2        Q3.31   1 2009-01-01           1 -0.20591649  1.527180692   2 2009-01-02           1 -0.19811357 -0.403800493   3 2009-01-03           1  0.35147949 -1.02641801...11  1 2009-01-01           2 -0.29177677  -0.448435112  2 2009-01-02           2 -1.19813815  -1.837609413  3 2009-01-03           2 -0.27425539  -2.0646661...21  1 2009-01-01           3 -0.71071921 -1.2155060022  2 2009-01-02           3  1.17501999  1.0358848223  3 2009-01-03           3  1.11717121 -0.35353058...這個tidyr庫有gather()函數(shù),它對組合非常有用。一一組欄:得到的數(shù)據(jù)幀有30行,如預期的那樣(10個個體,每個循環(huán)3個循環(huán))。但是,收集第二組列不能正常工作-它成功地使這兩組合并的列正常工作。Q3.2和Q3.3,但最后為90行,而不是30行(10個個體的所有組合,Q3.2的3個循環(huán),Q3.3的3個循環(huán);實際數(shù)據(jù)中每組列的組合將大幅度增加):df %>% gather(loop_number, Q3.2, starts_with("Q3.2")) %>%    gather(loop_number, Q3.3, starts_with("Q3.3")) %>%   mutate(loop_number = str_sub(loop_number,-2,-2))    id       time loop_number        Q3.2        Q3.31   1 2009-01-01           1 -0.20591649  1.527180692   2 2009-01-02           1 -0.19811357 -0.403800493   3 2009-01-03           1  0.35147949 -1.02641801...89  9 2009-01-09           3 -0.58581232 -0.1318702490 10 2009-01-10           3 -2.33393981 -0.48502131是否有一種方法可以使用多個調用gather()像這樣,在保持正確的行數(shù)的同時組合這樣的列的小子集?
查看完整描述

3 回答

?
嚕嚕噠

TA貢獻1784條經(jīng)驗 獲得超7個贊

這種方法對我來說似乎很自然:


df %>%

  gather(key, value, -id, -time) %>%

  extract(key, c("question", "loop_number"), "(Q.\\..)\\.(.)") %>%

  spread(question, value)

首先收集所有問題列,使用extract()分離成question和loop_number,然后spread()回到列中。


#>    id       time loop_number         Q3.2        Q3.3

#> 1   1 2009-01-01           1  0.142259203 -0.35842736

#> 2   1 2009-01-01           2  0.061034802  0.79354061

#> 3   1 2009-01-01           3 -0.525686204 -0.67456611

#> 4   2 2009-01-02           1 -1.044461185 -1.19662936

#> 5   2 2009-01-02           2  0.393808163  0.42384717


查看完整回答
反對 回復 2019-06-26
?
Qyouu

TA貢獻1786條經(jīng)驗 獲得超11個贊

這可以用reshape..這是有可能的dplyr盡管如此。


  colnames(df) <- gsub("\\.(.{2})$", "_\\1", colnames(df))

  colnames(df)[2] <- "Date"

  res <- reshape(df, idvar=c("id", "Date"), varying=3:8, direction="long", sep="_")

  row.names(res) <- 1:nrow(res)


   head(res)

  #  id       Date time       Q3.2       Q3.3

  #1  1 2009-01-01    1  1.3709584  0.4554501

  #2  2 2009-01-02    1 -0.5646982  0.7048373

  #3  3 2009-01-03    1  0.3631284  1.0351035

  #4  4 2009-01-04    1  0.6328626 -0.6089264

  #5  5 2009-01-05    1  0.4042683  0.5049551

  #6  6 2009-01-06    1 -0.1061245 -1.7170087

或使用dplyr


  library(tidyr)

  library(dplyr)

  colnames(df) <- gsub("\\.(.{2})$", "_\\1", colnames(df))


  df %>%

     gather(loop_number, "Q3", starts_with("Q3")) %>% 

     separate(loop_number,c("L1", "L2"), sep="_") %>% 

     spread(L1, Q3) %>%

     select(-L2) %>%

     head()

  #  id       time       Q3.2       Q3.3

  #1  1 2009-01-01  1.3709584  0.4554501

  #2  1 2009-01-01  1.3048697  0.2059986

  #3  1 2009-01-01 -0.3066386  0.3219253

  #4  2 2009-01-02 -0.5646982  0.7048373

  #5  2 2009-01-02  2.2866454 -0.3610573

  #6  2 2009-01-02 -1.7813084 -0.7838389


查看完整回答
反對 回復 2019-06-26
  • 3 回答
  • 0 關注
  • 548 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號