这是带有这些列的以下数据框
名称(local_data)
[1] "Frame" "Time..Seconds." "X" "Y" "Z" "W" "X.1"
[8] "Y.1" "Z.1" "X.33" "X.2" "Y.2" "Z.2" "X.34"
[15] "X.3" "Y.3" "Z.3" "X.35" "X.4" "Y.4" "Z.4"
[22] "X.36" "X.5" "Y.5" "Z.5" "X.6" "Y.6" "Z.6"
[29] "X.7" "Y.7" "Z.7" "X.8" "Y.8" "Z.8" "X.9"
[36] "Y.9" "Z.9" "X.10" "Y.10" "Z.10" "X.11" "Y.11"
[43] "Z.11" "X.12" "Y.12" "Z.12" "X.13" "Y.13" "Z.13"
[50] "X.14" "Y.14" "Z.14" "X.15" "Y.15" "Z.15" "X.16"
[57] "Y.16" "Z.16" "X.17" "Y.17" "Z.17" "X.18" "Y.18"
[64] "Z.18" "X.19" "Y.19" "Z.19" "X.20" "Y.20" "Z.20"
[71] "X.21" "Y.21" "Z.21" "X.22" "Y.22" "Z.22" "X.23"
[78] "Y.23" "Z.23" "X.24" "Y.24" "Z.24" "X.25" "Y.25"
[85] "Z.25" "X.26" "Y.26" "Z.26" "X.27" "Y.27" "Z.27"
[92] "X.28" "Y.28" "Z.28" "X.29" "Y.29" "Z.29" "X.30"
[99] "Y.30" "Z.30" "X.31" "Y.31" "Z.31" "X.32" "Y.32"
[106] "Z.32"
我想将所有X,Y,Z列合并在一起。
我可以像这样选择所有X,Y和Z列名称:
Xpos <- c(2, grep(glob2rx("X*"), names(local_data)))
我可以像这样合并这些选定的列:
df.x <- local_data[,Xpos] %>% gather(key, xpox, 2:length(Xpos))
问题是有一些松散的X列没有对应的Y和Z列。例如,X.33
我正在寻找一种基于矢量的优雅代码,以标识具有相应Y和X列的X列。从概念上讲,我认为最简单的方法是查找具有相同编号的列,例如X.10,Y.10,Z.10。有小费吗?
谢谢,
这是您要搜索的吗?我尽力整理一下。
library(tidyverse)
# generate test set
names(local_data) <- local_data <- paste0(sample(c('X','Y','Z'),100,T),'.',sample(1:100,100,T))
# generate logical column index
idx <- names(local_data) %>% substr(.,3,nchar(.)) %>%
is.element(.,names(table(.)[table(.)==3])) & grepl('X',names(local_data))
# test the result
names(local_data)
#> [1] "Y.48" "Y.45" "X.31" "Y.13" "X.67" "Z.85" "X.1" "Z.18"
#> [9] "X.40" "Z.50" "Y.51" "X.86" "X.60" "Y.8" "X.23" "Y.16"
#> [17] "X.6" "X.11" "Z.38" "X.93" "Z.7" "Z.21" "Z.41" "X.19"
#> [25] "Z.37" "Z.88" "Y.100" "Z.65" "Y.37" "Z.65" "Y.27" "Y.13"
#> [33] "X.88" "Y.7" "X.88" "X.30" "X.41" "Y.15" "Y.59" "Y.94"
#> [41] "Y.47" "Z.4" "X.40" "Z.43" "X.47" "X.31" "Z.38" "Y.35"
#> [49] "Z.64" "Z.64" "Z.27" "X.4" "X.30" "Z.4" "X.97" "X.90"
#> [57] "Y.47" "Y.75" "Z.12" "X.92" "Z.8" "Y.33" "Z.43" "Z.95"
#> [65] "X.74" "Y.55" "Y.61" "X.91" "Z.37" "X.95" "Y.1" "Y.56"
#> [73] "X.82" "Y.25" "Z.45" "Y.66" "X.81" "Z.17" "X.76" "X.57"
#> [81] "Z.60" "Y.31" "X.22" "X.55" "Y.2" "Y.35" "Z.1" "Y.12"
#> [89] "Z.59" "Z.58" "X.100" "Z.91" "X.33" "Y.42" "Y.16" "X.100"
#> [97] "X.41" "X.2" "X.64" "Y.92"
names(local_data)[idx]
#> [1] "X.31" "X.1" "X.88" "X.88" "X.41" "X.47" "X.31" "X.4"
#> [9] "X.100" "X.100" "X.41" "X.64"
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句