第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

請問創(chuàng)建多變量計(jì)數(shù)器

請問創(chuàng)建多變量計(jì)數(shù)器

小唯快跑啊 2019-07-29 13:00:53
創(chuàng)建多變量計(jì)數(shù)器我的數(shù)據(jù)如下:CustomerID TripDate1           1/3/20131           1/4/20131           1/9/20132           2/1/20132           2/4/20133           1/2/2013我需要創(chuàng)建一個(gè)計(jì)數(shù)器變量,如下所示:CustomerID TripDate   TripCounter1           1/3/2013   11           1/4/2013   2 1           1/9/2013   32           2/1/2013   12           2/4/2013   2 3           1/2/2013   1 Tripcounter對每一位顧客都是如此。
查看完整描述

3 回答

?
慕的地10843

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊

使用ave..假設(shè)你data.frame名為“mydf”:


mydf$counter <- with(mydf, ave(CustomerID, CustomerID, FUN = seq_along))

mydf

#   CustomerID TripDate counter

# 1          1 1/3/2013       1

# 2          1 1/4/2013       2

# 3          1 1/9/2013       3

# 4          2 2/1/2013       1

# 5          2 2/4/2013       2

# 6          3 1/2/2013       1

為了說明它的價(jià)值,我還在我的“splitstackform”包中包含的函數(shù)中實(shí)現(xiàn)了該方法的一個(gè)版本。這個(gè)函數(shù)被調(diào)用getanID:


mydf <- data.frame(IDA = c("a", "a", "a", "b", "b", "b", "b"),

                   IDB = c(1, 2, 1, 1, 2, 2, 2), values = 1:7)

mydf

# install.packages("splitstackshape")

library(splitstackshape)

# getanID(mydf, id.vars = c("IDA", "IDB"))

getanID(mydf, id.vars = 1:2)

#   IDA IDB values .id

# 1   a   1      1   1

# 2   a   2      2   1

# 3   a   1      3   2

# 4   b   1      4   1

# 5   b   2      5   1

# 6   b   2      6   2

# 7   b   2      7   3

從上面的示例中可以看到,我編寫函數(shù)的方式是可以指定一個(gè)或多個(gè)列作為ID列。它檢查是否有任何id.vars被復(fù)制,如果是,那么它將為您生成一個(gè)新的ID變量。




查看完整回答
反對 回復(fù) 2019-08-02
?
慕運(yùn)維8079593

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊

您也可以使用plyr為此(使用@AnadaMahto的示例數(shù)據(jù)):


> ddply(mydf, .(IDA), transform, .id = seq_along(IDA))

  IDA IDB values .id

1   a   1      1   1

2   a   2      2   2

3   a   1      3   3

4   b   1      4   1

5   b   2      5   2

6   b   2      6   3

7   b   2      7   4

甚至:


> ddply(mydf, .(IDA, IDB), transform, .id = seq_along(IDA))

  IDA IDB values .id

1   a   1      1   1

2   a   1      3   2

3   a   2      2   1

4   b   1      4   1

5   b   2      5   1

6   b   2      6   2

7   b   2      7   3

請注意plyr沒有最快的解決方案的美譽(yù),因?yàn)槟阈枰匆豢磀ata.table.


這是一個(gè)data.table方法:


library(data.table)

DT <- data.table(mydf)

DT[, .id := sequence(.N), by = "IDA,IDB"]

DT

#    IDA IDB values .id

# 1:   a   1      1   1

# 2:   a   2      2   1

# 3:   a   1      3   2

# 4:   b   1      4   1

# 5:   b   2      5   1

# 6:   b   2      6   2

# 7:   b   2      7   3




查看完整回答
反對 回復(fù) 2019-08-02
?
搖曳的薔薇

TA貢獻(xiàn)1793條經(jīng)驗(yàn) 獲得超6個(gè)贊

我需要經(jīng)常這樣做,并編寫了一個(gè)函數(shù),它的實(shí)現(xiàn)與以前的答案不同。我不知道哪一種解決辦法最有效。

idCounter <- function(x)  {
    unlist(lapply(rle(x)$lengths, seq_len))}mydf$TripCounter <- idCounter(mydf$CustomerID)


查看完整回答
反對 回復(fù) 2019-08-02
  • 3 回答
  • 0 關(guān)注
  • 468 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號