我有一個非常簡單的資料集,例如:
datfra <- data.frame(ID = c(2, 3, 5, 4, 1),
Species = c("bluewhale", "bluewhale","bndolphin","bluewhale","whalesp"))
看著:
> datfra
ID Species
1 2 bluewhale
2 3 bluewhale
3 5 bndolphin
4 4 bluewhale
5 1 whalesp
我想添加第三列,對行進行編號,但從某個特定數字開始,例如:
strartingfrom <- 15
datfra <- datfra %>% arrange(ID) %>% mutate(newID = row_number(from=strartingfrom))
顯然from內部row_number不起作用。任何人都有一種優雅的方法來從不同的數字開始編號到 1?
應該看起來像:
newID ID Species
1 16 1 whalesp
2 17 2 bluewhale
3 18 3 bluewhale
4 19 4 bluewhale
5 20 5 bndolphin
[編輯]
我只是嘗試一種簡單的方法就解決了:
datfra <- datfra %>% arrange(ID) %>% mutate(newID = strartingfrom row_number())
uj5u.com熱心網友回復:
你可以直接試試這個:
datfra <- datfra %>%
arrange(ID) %>%
mutate(newID = strartingfrom:(strartingfrom nrow(datfra) - 1))
或者做一個函式:
newID_row_number <- function(dt, start_from, by_id="ID") {
dt <- dt %>%
arrange(!!as.name(by_id)) %>%
mutate(newID = start_from:(start_from nrow(dt)-1))
return(dt)
}
strartingfrom <- 15
datfra <- newID_row_number(datfra, strartingfrom)
uj5u.com熱心網友回復:
也許你可以使用這個:
start = 10
datfra$newID = seq(start, nrow(datfra) start-1)
uj5u.com熱心網友回復:
使用`:`()和order()。
i <- 15 ## define start
transform(datfra[order(datfra$ID), ], new=15:(15 nrow(datfra) - 1))
# ID Species new
# 5 1 whalesp 15
# 1 2 bluewhale 16
# 2 3 bluewhale 17
# 4 4 bluewhale 18
# 3 5 bndolphin 19
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/394682.html
標籤:r
