根据另一列后面的重复数字制作一列 数据

问题描述

我有这些数据,我想创建一个新列:

structure(list(AGE_GROUP = c("21-30","31-40","41-50"),DATE = c("12/17/2020","12/17/2020","12/17/2020"),VACCINE_COUNT = c(36L,47L,26L),PERC_TOTAL_VACC = c(24.82758621,32.4137931,17.93103448),RECIPIENT_COUNT = c(NA_integer_,NA_integer_,NA_integer_
    ),PERC_TOTAL_RECIP = c(NA_real_,NA_real_,NA_real_),RECIP_FULLY_VACC = c(NA_integer_,NA_integer_),PERC_FULLY_VACC = c(NA_real_,NA_real_)),row.names = c(NA,3L),class = "data.frame")

基于年龄组,我想制作一列包含此数字 c(8,12,13,16,14,12) 的列,并重复此列 3 次。所以结果是一个新的列,有 3 次提到的数字。

我已使用此代码 vaccine<-vaccine %>% mutate(new_col = rep(list(vals),n())) %>% unnest() 我有这样的东西

"12/18/2020","12/18/2020"),VACCINE_COUNT = c(421L,421L,421L
),PERC_TOTAL_VACC = c(15.52932497,15.52932497,15.52932497),X = c(NA,NA,NA),X.1 = c(14L,14L,14L),new_col = c(8,13)),-3L),class = c("tbl_df","tbl","data.frame"))```

While I want to keep my data and just repeat  the data

解决方法

您的意思是要为数据框中的每一行重复值 c(8,12,13,16,14,12) 吗?试试:

library(dplyr)
library(tidyr)

vals <- c(8,12)

df %>%
  mutate(new_col = rep(list(vals),n())) %>%
  unnest(new_col)
,

使用 base R

transform(df1[rep(seq_len(nrow(df1)),each = length(vals)),],new_col = vals)

或者用uncount

library(dplyr)
library(tidyr)
df1 %>%
    uncount(length(vals)) %>% 
    mutate(new_col = rep(vals,length.out = n()))

如果我们只需要 replicate 和存储列,用一个 list

df1 %>%
    mutate(new_col = list(vals))

数据

vals <- c(8,12)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...