簡體   English   中英

根據分組變量 R 添加更多行

[英]Add more rows based on a grouping variable R

我想根據分組變量向我的數據集添加更多行。 現在,我的數據有 2 行,但我想要 3 行,並且第三行重復 var app

這是我的數據目前的樣子:

my_data <- data.frame(app = c('a','b'), type = c('blue','red'), code = c(1:2), type_2 = c(NA, 'blue'), code_2 = c(NA, 3))

app    type    code    type_2    code_2
a      blue    1       NA        NA
b      red     2       blue      3

我希望數據看起來像這樣:

app    type    code
a      blue    1       
b      red     2       
b      blue    3
library(data.table)
setDT(my_data)
res <- 
  melt(
    my_data,
    id.vars = "app",
    measure.vars = patterns(c("^type", "^code")),
    value.name = c("type", "code")
  )[!is.na(type), .(app, type, code)]

使用tidyverse

library(dplyr)
library(stringr)
library(tidyr)

my_data %>% 
   rename_at(vars(c(type, code)), ~ str_c(., "_1")) %>%
   pivot_longer(cols = -app, names_to = c(".value", "grp"), names_sep = "_",
        values_drop_na = TRUE) %>% select(-grp)
# A tibble: 3 x 3
#  app   type   code
#  <chr> <chr> <dbl>
#1 a     blue      1
#2 b     red       2
#3 b     blue      3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM