使用dplyr一次创建多个列,取决于另一个df的列数

zynd9foi  于 2022-12-25  发布在  其他
关注(0)|答案(1)|浏览(108)

我想用dplyr创建一个有n列的df(取决于df data的列数),其中名称的根与TIME.相同,第一列在所有行中等于1,第二列等于2,依此类推。

data <- data.frame(ID=c(1:6), VALUE.1=c(2,5,7,1,3,5), VALUE.2=c(1,7,2,4,5,4), VALUE.3=c(9,2,6,3,4,4), VALUE.4=c(1,2,3,2,3,8))

第一列数据作为第一列。这就是我想要的:

ID  TIME.1 TIME.2 TIME.3 TIME.4
   1    1      2       3       4
   2    1      2       3       4
   3    1      2       3       4
   4    1      2       3       4
   5    1      2       3       4
   6    1      2       3       4

现在我在做:

T1 <- data.frame(ID=unique(data$ID), TIME.1=rep(1, length(unique(data$ID))), TIME.2=rep(2, length(unique(data$ID))), TIME.3=rep(3, length(unique(data$ID))), TIME.4=rep(4, length(unique(data$ID))) )
ia2d9nvy

ia2d9nvy1#

我们可以用列名中的后缀替换列内容,然后rename替换从VALUE.nTIME.n的列。

library(dplyr)

data %>% 
  mutate(across(starts_with("VALUE"), ~sub("VALUE.", "", cur_column()))) %>% 
  rename_with(~sub("VALUE", "TIME", .x))

  ID TIME.1 TIME.2 TIME.3 TIME.4
1  1      1      2      3      4
2  2      1      2      3      4
3  3      1      2      3      4
4  4      1      2      3      4
5  5      1      2      3      4
6  6      1      2      3      4

相关问题