簡體   English   中英

為 R 中的每個組添加和復制一個新列

[英]Add and replicate a new column for each group in R

我有一個這樣的數據框

df <- data.frame(id = c(12345,12345,12345,221,221,221),
                 range_key = c('2022 Q2','2022 Q3','2023 Q4','2022 Q2','2023 Q3','2023 Q4'), week = c(w 1,w 1,w 2,w 3,w 3, w 4))

我想添加另一列

country_list <-  c('US','CA','JP','KR','NZ','AU','PH','ID','TH','IN','MX','CO','CL','AR','BR','DE','IT','GB','ES','FR','NL') %>% data.frame(country=.)

對於數據框我嘗試了以下方法,但它不適用於大數據集

for(i in 1:length(country_list$country)){
  temp_data <- (df) %>% mutate(country= country_list$country[i])
  all_data <- rbind.fill(temp_data, df)
  #rm(temp_data)
  }

我需要定義一個新的空數據框,然后附加到這個新的數據框

new_df <- data.frame()
for(i in 1:length(country_list$country)){
  temp_data <- (df) %>% mutate(country= country_list$country[i])
  new_df <- rbind.fill(temp_data, new_df)
  #rm(temp_data)
  }

cbind()還不夠嗎? 也許我在這里遺漏了一些東西......我的意思是:

df1 <- cbind(df, country_list)

但是如果你想運行某種循環,你可以使用這樣的東西:

df1 <- apply(df, 1, function(x) {cbind(?})

暫無
暫無

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

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