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/A
s。
("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))
我有一个如下所示的数据框:
"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/A
s。
("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))