【发布时间】:2016-04-08 03:49:40
【问题描述】:
我有一个数据框,df:
ID <- c('ID1','ID1','ID2','ID3','ID3','ID3','ID4')
hr <- c(10,20,10,15,20,10,15)
DD <- c('DD1','DD2','DD3','DD4','DD5','DD6','DD7')
ddhr <- c(15,20,30,20,10,15,10)
df <- data.frame(ID,hr,DD,ddhr)
df
ID hr DD ddhr
1 ID1 10 DD1 15
2 ID1 20 DD2 20
3 ID2 10 DD3 30
4 ID3 15 DD4 20
5 ID3 20 DD5 10
6 ID3 10 DD6 15
7 ID4 15 DD7 10
此数据框按df$ID排序。
我想更改此数据框,以便每次出现重复的 df$ID 条目时,该重复条目和相应的 df$hr 条目都将转换为空白条目 ("")。
理想的结果数据框如下所示:
ID hr DD ddhr
1 ID1 10 DD1 15
2 DD2 20
3 ID2 10 DD3 30
4 ID3 15 DD4 20
5 DD5 10
6 DD6 15
7 ID4 15 DD7 10
这样做的最佳方法是什么?我试过了:
df$ID=as.character(df$ID)
df$ID=ifelse(!duplicated(df$ID)==FALSE,"",df$ID)
df$hr=ifelse(df$ID=="","",df$hr)
但这似乎有点冗长,特别是如果我有多个额外的列想要空白(除了 hr)。
【问题讨论】:
标签: r