[英]How to retain one of the duplicated rows randomly in r (not the first duplicated row)
[英]How to manipulate duplicated rows in R?
我已經復制了一組數據,我想通過在“代碼”列下的復制行中添加“ A”並在原始行中添加“ a”來編輯復制的行。 下面的例子。
可重現的數據幀:
Date <- c("2016-01-02","2016-01-03","2016-01-04")
Data <- c("0",".2", ".1")
Code <- c("", "", "")
y <- data.frame(Date, Data, Code)
y<- y[rep(row.names(y),2),]
y$Date <- as.Date(y$Date, format='%Y-%m-%d')
y <- y[order(y$Date), ]
當前數據:
> y
Date Data Code
1 2016-01-02 0
1.1 2016-01-02 0
2 2016-01-03 .2
2.1 2016-01-03 .2
3 2016-01-04 .1
3.1 2016-01-04 .1
期望的結果:
> y
Date Data Code
1 2016-01-02 0 a
1.1 2016-01-02 0 A
2 2016-01-03 .2 a
2.1 2016-01-03 .2 A
3 2016-01-04 .1 a
3.1 2016-01-04 .1 A
如果第一次遇到行,則duplicated(y)
將返回一個布爾型向量,其值為FALSE,如果duplicated(y)
返回TRUE。 您可以如下使用它:
y$Code = ifelse(duplicated(y),"A","a")
輸出:
Date Data Code
1 2016-01-02 0 a
1.1 2016-01-02 0 A
2 2016-01-03 .2 a
2.1 2016-01-03 .2 A
3 2016-01-04 .1 a
3.1 2016-01-04 .1 A
無需事先在y <- data.frame(Date, Data, Code)
創建該列,因此可能會變成: y <- data.frame(Date, Data)
或者你可以嘗試group
從dplyr
,萬一你在每個時間超過兩個復制
y%>%group_by(Date)%>%dplyr::mutate(code=ifelse(row_number()==1,'a','A'))
#y%>%group_by(Date)%>%dplyr::mutate(code=ifelse(row_number()%%2==0,'A','a')) more than 2
# A tibble: 6 x 4
# Groups: Date [3]
Date Data Code code
<date> <fctr> <fctr> <chr>
1 2016-01-02 0 a
2 2016-01-02 0 A
3 2016-01-03 .2 a
4 2016-01-03 .2 A
5 2016-01-04 .1 a
6 2016-01-04 .1 A
例如 :
y<- y[rep(row.names(y),3),]
y$Date <- as.Date(y$Date, format='%Y-%m-%d')
y <- y[order(y$Date), ]
y%>%group_by(Date)%>%dplyr::mutate(code=ifelse(row_number()%%2==0,'A','a')
# A tibble: 9 x 4
# Groups: Date [3]
Date Data Code code
<date> <fctr> <fctr> <chr>
1 2016-01-02 0 a
2 2016-01-02 0 A
3 2016-01-02 0 a
4 2016-01-03 .2 a
5 2016-01-03 .2 A
6 2016-01-03 .2 a
7 2016-01-04 .1 a
8 2016-01-04 .1 A
9 2016-01-04 .1 a
具有索引的簡單R替代方案是
y$Code <- c("a", "A")[duplicated(y) + 1]
哪個返回
y
Date Data Code
1 2016-01-02 0 a
1.1 2016-01-02 0 A
2 2016-01-03 .2 a
2.1 2016-01-03 .2 A
3 2016-01-04 .1 a
3.1 2016-01-04 .1 A
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.