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

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

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

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

皈依舞 2019-07-17 18:33:46
創(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我需要?jiǎng)?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對(duì)每一位顧客都是如此。
查看完整描述

3 回答

?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(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

為了說(shuō)明它的價(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

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


查看完整回答
反對(duì) 回復(fù) 2019-07-17
?
哈士奇WWW

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個(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

請(qǐng)注意plyr沒(méi)有最快的解決方案的美譽(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


查看完整回答
反對(duì) 回復(fù) 2019-07-17
?
動(dòng)漫人物

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

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

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


查看完整回答
反對(duì) 回復(fù) 2019-07-17
  • 3 回答
  • 0 關(guān)注
  • 575 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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