最初にgather
すべての列を入力し、次にspread
を交互に入力して、Force
とTime
行を交互に入力します。 tidyr
とdplyr
を使用して
rtabla1 <- structure(list(SR_1.5x1.5x1.5_90s.001.Force = c(52.2, 55.3, 62.6, 66.5, 70.8, 75.9, 77.6, 78.7, 80.2, 83.8), SR_1.5x1.5x1.5_90s.001.Time = c(0, 0.004, 0.008, 0.012, 0.016, 0.02, 0.024, 0.028, 0.032, 0.036),
SR_1.5x1.5x1.5_90s.002.Force = c(64.8, 69.6, 76, 80.2, 85.1,
90.5, 94.1, 95.6, 99.7, 103.4), SR_1.5x1.5x1.5_90s.002.Time = c(0,
0.004, 0.008, 0.012, 0.016, 0.02, 0.024, 0.028, 0.032, 0.036
)), .Names = c("SR_1.5x1.5x1.5_90s.001.Force", "SR_1.5x1.5x1.5_90s.001.Time", "SR_1.5x1.5x1.5_90s.002.Force", "SR_1.5x1.5x1.5_90s.002.Time"), row.names = c(NA, -10L), class = "data.frame")
## SR_1.5x1.5x1.5_90s.001.Force SR_1.5x1.5x1.5_90s.001.Time SR_1.5x1.5x1.5_90s.002.Force SR_1.5x1.5x1.5_90s.002.Time
##1 52.2 0.000 64.8 0.000
##2 55.3 0.004 69.6 0.004
##3 62.6 0.008 76.0 0.008
##4 66.5 0.012 80.2 0.012
##5 70.8 0.016 85.1 0.016
##6 75.9 0.020 90.5 0.020
##7 77.6 0.024 94.1 0.024
##8 78.7 0.028 95.6 0.028
##9 80.2 0.032 99.7 0.032
##10 83.8 0.036 103.4 0.036
:
まず、としてあなたのデータの小さなスニペットを再作成
library(dplyr)
library(tidyr)
result <- rtabla1 %>% mutate(Row=seq_len(n())) %>% ##1.
gather("ID","Vals",-Row) %>% ##2.
mutate(FT=ifelse(grepl(".Force$",ID), "Force", "Time"), ##3.
ID=sub("(.Force$)|(.Time$)","",ID)) %>%
spread(FT,Vals) %>% ##4.
select(-Row) %>% ##5.
arrange(ID) ##6.
注:
- 最初にある識別子列を追加します行番号だけ。
gather
を除くすべての列は、集計された列名を含むID
列になります。
mutate
ID
カラムカラムを構成する文字列操作を使用してFT
。このFT
列は、収集された行のうちどれがForce
で、どれがTime
であるかを識別するために作成されます。これは、その後のspread
で使用されます。その値は結果の列名(つまり"Force"
または"Time"
)と一致するように作成されます。ここでは、grepl
を使用して、で終わるID
を確認してください。存在する場合は、FT
列を"Force"
に設定します。それ以外の場合は、FT
列を"Time"
に設定します。次にID
列を更新して、末尾から".Force"
または".Time"
のいずれかを削除します。
- ここで
FT
をキーとし、値として収集した値を使用してspread
とします。
- 結果からの列を削除します。
ID
result
並び替え予想されるようにデータの小さな断片を使用することである:
print(result)
## ID Force Time
##1 SR_1.5x1.5x1.5_90s.001 52.2 0.000
##2 SR_1.5x1.5x1.5_90s.001 55.3 0.004
##3 SR_1.5x1.5x1.5_90s.001 62.6 0.008
##4 SR_1.5x1.5x1.5_90s.001 66.5 0.012
##5 SR_1.5x1.5x1.5_90s.001 70.8 0.016
##6 SR_1.5x1.5x1.5_90s.001 75.9 0.020
##7 SR_1.5x1.5x1.5_90s.001 77.6 0.024
##8 SR_1.5x1.5x1.5_90s.001 78.7 0.028
##9 SR_1.5x1.5x1.5_90s.001 80.2 0.032
##10 SR_1.5x1.5x1.5_90s.001 83.8 0.036
##11 SR_1.5x1.5x1.5_90s.002 64.8 0.000
##12 SR_1.5x1.5x1.5_90s.002 69.6 0.004
##13 SR_1.5x1.5x1.5_90s.002 76.0 0.008
##14 SR_1.5x1.5x1.5_90s.002 80.2 0.012
##15 SR_1.5x1.5x1.5_90s.002 85.1 0.016
##16 SR_1.5x1.5x1.5_90s.002 90.5 0.020
##17 SR_1.5x1.5x1.5_90s.002 94.1 0.024
##18 SR_1.5x1.5x1.5_90s.002 95.6 0.028
##19 SR_1.5x1.5x1.5_90s.002 99.7 0.032
##20 SR_1.5x1.5x1.5_90s.002 103.4 0.036