将特定观察和行转换为 R 中的列
Turn Specific Observation and Row into Column in R
我的数据包含与以下示例类似的行和列,基本上想将每隔一行转换为一列。但是,我还想提取每个特定的观察结果并将该结果放入相应的列中。所以我会采取:
X1 x y xx xy yy
ci.lo1 0 0 0 0 0 -19350.63073
ci.up1 0 0 0 0 0 104.23538
ci.lo2 0 0 0 0 0 -8740.25544
ci.up2 0 0 0 0 0 52.97149
并试图将其变成:
X1.lo X1.up x.lo x.up y.lo y.up xx.lo xx.up xy.lo xy.up yy.lo yy.up
1 0 0 0 0 0 0 0 0 0 0 -19350.63073 104.23538
2 0 0 0 0 0 0 0 0 0 0 -8740.25544 52.97149
我想知道是否可以在 tidy
中进行这种类型的转换,如果不能在 base R
中进行。
提前致谢。
data %>%
rownames_to_column() %>%
mutate(rowname2=sub("^ci\.(.*)\d$","\1",rowname),
rowname =sub("[^0-9]+","", rowname)) %>%
pivot_wider(names_from = rowname2,
values_from = -c(rowname2, rowname),
id_cols = rowname,
names_sep = ".") %>%
column_to_rownames()
X1.lo X1.up x.lo x.up y.lo y.up xx.lo xx.up xy.lo xy.up yy.lo yy.up
1 0 0 0 0 0 0 0 0 0 0 -19350.631 104.23538
2 0 0 0 0 0 0 0 0 0 0 -8740.255 52.97149
我的数据包含与以下示例类似的行和列,基本上想将每隔一行转换为一列。但是,我还想提取每个特定的观察结果并将该结果放入相应的列中。所以我会采取:
X1 x y xx xy yy
ci.lo1 0 0 0 0 0 -19350.63073
ci.up1 0 0 0 0 0 104.23538
ci.lo2 0 0 0 0 0 -8740.25544
ci.up2 0 0 0 0 0 52.97149
并试图将其变成:
X1.lo X1.up x.lo x.up y.lo y.up xx.lo xx.up xy.lo xy.up yy.lo yy.up
1 0 0 0 0 0 0 0 0 0 0 -19350.63073 104.23538
2 0 0 0 0 0 0 0 0 0 0 -8740.25544 52.97149
我想知道是否可以在 tidy
中进行这种类型的转换,如果不能在 base R
中进行。
提前致谢。
data %>%
rownames_to_column() %>%
mutate(rowname2=sub("^ci\.(.*)\d$","\1",rowname),
rowname =sub("[^0-9]+","", rowname)) %>%
pivot_wider(names_from = rowname2,
values_from = -c(rowname2, rowname),
id_cols = rowname,
names_sep = ".") %>%
column_to_rownames()
X1.lo X1.up x.lo x.up y.lo y.up xx.lo xx.up xy.lo xy.up yy.lo yy.up
1 0 0 0 0 0 0 0 0 0 0 -19350.631 104.23538
2 0 0 0 0 0 0 0 0 0 0 -8740.255 52.97149