Re: [問題] Recode寫法
※ 引述《criky (立業成家)》之銘言:
: [問題類型]:
: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
: [軟體熟悉度]:
: 入門(寫過其他程式,只是對語法不熟悉)
: [問題敘述]:
: 若有一欄位id,R要怎麼編出id的流水號?
: id → id2
: 1122 1
: 1122 1
: 1133 2
: 1133 2
: 1133 2
: 2255 3
: 2255 3
: 2255 3
: 2255 3
: 4444 4
: 4444 4
: 5555 5
id = c("1122", "1122", "1133", "1133", "1133", "2255", "2255", "2255",
"4444", "4444", "5555")
tmp = rle(id)
tmp$values = 1:length(tmp$values)
inverse.rle(tmp)
# [1] 1 1 2 2 2 3 3 3 4 4 5
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.73.159
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1442818590.A.200.html
推
09/21 15:07, , 1F
09/21 15:07, 1F
→
09/21 15:52, , 2F
09/21 15:52, 2F
→
09/21 15:52, , 3F
09/21 15:52, 3F
不太懂,麻煩問題描述清楚一點,謝謝~
→
09/21 16:33, , 4F
09/21 16:33, 4F
→
09/21 16:33, , 5F
09/21 16:33, 5F
do.call(c, sapply(tmp$lengths, function(x) 1:x))
# 1 2 1 2 3 1 2 3 1 2 1
→
09/21 16:45, , 6F
09/21 16:45, 6F
推
09/23 12:01, , 7F
09/23 12:01, 7F
→
09/23 12:01, , 8F
09/23 12:01, 8F
直接改成用factor就好
library(dplyr)
library(data.table)
library(magrittr)
id_ = c("1122", "1122", "1133", "1133", "1133", "2255", "2255", "2255",
"2255", "4444", "4444", "5555")
dat = data.table(id = id_)
dat %>% mutate(id2 = as.integer(factor(id))) %>% group_by(id) %>%
mutate(id3 = 1:length(id2))
id id2 id3
1 1122 1 1
2 1122 1 2
3 1133 2 1
4 1133 2 2
5 1133 2 3
6 2255 3 1
7 2255 3 2
8 2255 3 3
9 2255 3 4
10 4444 4 1
11 4444 4 2
12 5555 5 1
※ 編輯: celestialgod (140.109.73.190), 10/06/2015 12:10:13
※ 編輯: celestialgod (140.109.73.190), 10/07/2015 16:24:41
討論串 (同標題文章)
完整討論串 (本文為第 2 之 3 篇):
0
2
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章