我有一個資料集:
client_id grouport year which_year frequency
7 2006 2011 6 10
7 2006 2012 7 11
7 2006 2013 8 17
17 2006 2011 6 9
17 2006 2012 7 4
17 2006 2013 8 7
19 2015 2015 1 2
19 2015 2016 2 20
19 2015 2017 3 30
我想創建一個變數 "frequency_start",該變數在客戶ID的最小which_year處獲取頻率,并在客戶ID=i的所有行中復制它。
client_id cohort year which_year frequency frequency_start
7 2006 2011 6 10 10
7 2006 2012 7 11 10
7 2006 2013 8 17 10
17 2006 2011 6 9 9
17 2006 2012 7 4 9
17 2006 2013 8 7 9
19 2015 2015 1 2 2
19 2015 2016 2 20 2
19 2015 2017 3 30 2
我試過用lapply進行for回圈,用which.min進行匹配,但都不能正常作業。你有什么辦法可以幫助我嗎?我將非常、非常感激。
uj5u.com熱心網友回復:
你可以使用which.min來獲取which_year的最小索引,并為每個client_id獲取相應的frequency值。
library(dplyr)
df <- df %>%
group_by(client_id) %>%
mutate(frequency_start = frequency[/span>which. min(which_year)] %>%
解組
df
# client_id cohort year which_year frequency frequency_start。
# <int> <int> <int> <int> <int>/span>
#1 7 2006 2011 6 10 10
#2 7 2006 2012 7 11 10
#3 7 2006 2013 8 17 10
#4 17 2006 2011 6 9 9
#5 17 2006 2012 7 4 9
#6 17 2006 2013 8 7 9
#7 19 2015 2015 1 2 2
#8 19 2015 2016 2 20 2
#9 19 2015 2017 3 30 2
資料
。df < -結構(list(client_id = c(7L。 7L。 7L, 17L, 17L。 17L, 19L,
19L, 19L)。 cohort = c(2006L。 2006L, 2006L,, 2006L, 2006L, 2006L,
2015L,/span> 2015L。 2015L)。 年= c(2011L。 2012L, 2013L。 2011L, 2012L,
2013L,/span> 2015L。 2016L, 2017L)。 which_year = c(6L。 7L。 8L, 6L。 7L,
8L, 1L, 2L。 3L)。 頻率 = c(10L。 11L, 17L, 9L。 4L, 7L。 2L, 2L,
20L, 30L))。 class = "data. frame",行。 names = c(NA。 -9L))
uj5u.com熱心網友回復:
基礎R:
dat$frequency_start < - dat$frequency[ave()
seq_len(nrow(dat))。 dat$client_id,
FUN = function(i) i[/span>which. min(dat$year[i])]
)]
資料
# client_id cohort year which_year frequency frequency_start
# 1 7 2006 2011 6 10 10
# 2 7 2006 2012 7 11 10
# 3 7 2006 2013 8 17 10
# 4 17 2006 2011 6 9 9
# 5 17 2006 2012 7 4 9
# 6 17 2006 2013 8 7 9
# 7 19 2015 2015 1 2 2
# 8 19 2015 2016 2 20 2
# 9 19 2015 2017 3 30 2
通常情況下,ave被賦予一個資料列作為其第一個引數。然而,由于我們希望在最小的年(兩列)的頻率,我認為應該傳遞行指數來代替。同樣,由于ave總是回傳其第一個引數的class(不管內部函式回傳什么),anon函式也回傳一個整數,然后用來索引原始的frequency列。雖然在這個樣本資料中,frequency似乎是一個整數,但據我所知,它是一個接近整數的浮點,這將被信任ave回傳我們想要的東西而打破。通過對 ave 的回傳進行索引,我們將始終把正確的變數類別/型別存盤到 frequency_start 中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/328902.html
標籤:
下一篇:在R中對2個串列進行迭代
