R:如何将几列分成相等等份,减少列数,重新分配数据?

R: How to divide several columns into equal and equivalent parts, reduce the number of columns, and reallocate data?

我有一个如下所示的数据框:

"ID" "condition" "E_01" "E_02" "E_03" "E_04"...
"ID01" "cond1"    0.1    0.2    0.1    N/A
"ID01" "cond2"    N/A    N/A    N/A    0.1
"ID01" "cond3"    N/A    N/A    N/A    N/A
"ID02" "cond1"    0.1    0.2    0.1    N/A
...

E_XY 标签继续到 N

如果我们假设N=9我想先将N拆分成相等和等价的部分,例如3,检索"T_01", "T_02", "T_03"三次,然后,重新分配数据摆脱所需输出中所示的 N/As。 ("E_01","E_04","E_07"全部属于"T_01""E_02","E_05","E_08"全部属于"T_02"等)

期望的输出:

"ID" "condition" "T_01" "T_02" "T_03"
"ID01" "cond1"    0.1    0.2    0.1
"ID01" "cond2"    0.1    0.2    0.1
"ID01" "cond3"    0.1    0.2    0.1
"ID02" "cond1"    0.1    0.2    0.1
...

有谁知道这样做的好方法吗?

也许,用 split.default -

试试这个
cols <- grep('E_', names(df))
N <- 3
result <- cbind(df[-cols], sapply(split.default(df[cols], 1:N), rowSums, na.rm = TRUE))