r - r data.table - 将空白分配给重复值(按组)
问题描述
我正在尝试使用 data.table 按组(a,b,c)将重复值设为空白。我在下面尝试过,但它只适用于变量。我正在考虑像我一样使用 tail() 或 head() ,但这没有用。
df$E[duplicated(df$E)] <- ""
输入表
a,b,c
=====
1,1,1
1,1,2
1,2,1
1,2,2
1,3,1
1,3,2
2,1,1
2,1,2
2,2,1
2,2,2
2,3,1
2,3,2
预期产出表
a,b,c
=====
1,1,1
, ,2
,2,1
, ,2
,3,1
, ,2
2,1,1
, ,2
,2,1
, ,2
,3,1
, ,2
解决方案
library(data.table)
df <- tibble::tribble(
~a,~b,~c,
1,1,1,
1,1,2,
1,2,1,
1,2,2,
1,3,1,
1,3,2,
2,1,1,
2,1,2,
2,2,1,
2,2,2,
2,3,1,
2,3,2
) %>% as.data.table()
df[,dupa:=rleid(a)][,rowid :=seq_len(.N) ,by=dupa][,a:=ifelse(rowid>1,NA,a)][,c("dupa","rowid"):=.(NULL,NULL)]
df[,dupb:=rleid(b)][,rowid :=seq_len(.N) ,by=dupb][,b:=ifelse(rowid>1,NA,b)][,c("dupb","rowid"):=.(NULL,NULL)]
df[,dupc:=rleid(c)][,rowid :=seq_len(.N) ,by=dupc][,b:=ifelse(rowid>1,NA,c)][,c("dupc","rowid"):=.(NULL,NULL)]
df
a b c
1: 1 1 1
2: NA NA 2
3: NA 2 1
4: NA NA 2
5: NA 3 1
6: NA NA 2
7: 2 1 1
8: NA NA 2
9: NA 2 1
10: NA NA 2
11: NA 3 1
12: NA NA 2
推荐阅读
- vue.js - 本地 Netlify 功能服务器给出奇怪的响应而不是 FaunaDB 数据
- html - 如何使数据表与我的主题兼容?
- javascript - 尝试连接到端口转发的数据库时套接字已关闭
- dpi - 无法使应用 DPI 感知 - 这不是重复的
- python - PyQt5 的口音
- python - 在 Python 请求正文中发布特殊字符
- java - 如何获取 RestTemplate 连接超时属性值?
- wordpress - get_footer 钩子在我的 wordpress 插件中调用了两次
- html - 如何对齐使用文件选择器的 Bootstrap 4 按钮?
- android - 新的 Google Play 控制台订单 UTC 时间