在里面
base R
split
和
Reduce
out <- Reduce(cbind, split(dummy_data, substr(dummy_data$id, 1, 1)))
names(out) <- make.names(names(out), unique = TRUE)
out
# id value id.1 value.1
#1 A1 0.3608284 B1 0.4503481
#2 A2 0.6718996 B2 0.9913113
#3 A3 0.9059352 B3 0.6967978
#4 A4 0.9342758 B4 0.1049022
其思想是按列的第一个字母分割数据
id
,这将返回一个列表。然后,我们使用
cbind
.
do.call
减少
makes.names
淘汰。
do.call(cbind, split(dummy_data, substr(dummy_data$id, 1, 1)))
# A.id A.value B.id B.value
#1 A1 0.3608284 B1 0.4503481
#2 A2 0.6718996 B2 0.9913113
#3 A3 0.9059352 B3 0.6967978
#4 A4 0.9342758 B4 0.1049022