Cod*_*123 4 r subset dataframe
我想知道如何在R中执行一些基本的数据操作.我想要做的是以下内容.
我有一个具有以下模式的数据表:
V1 V2 V3
ABC X 24
ABC Y 30
EFG X 4
EFG Y 28
HIJ P 40
HIJ Y 41
PKL X 32
Run Code Online (Sandbox Code Playgroud)
现在我想要检索V1的所有值/对,它没有V2上不是X的对应值.在上面的数据集中,这个子集将是
HIJ P 40
HIJ Y 41
Run Code Online (Sandbox Code Playgroud)由于这对HIJ都没有V2值为X.
我还想检索不重复两次的V1的所有值.在上面的例子中,它将是
PKL X 32
Run Code Online (Sandbox Code Playgroud)你提到过data.table,所以这两种请求都有两种可能的方法
library(data.table)
Run Code Online (Sandbox Code Playgroud)
1.
setDT(df)[, .SD[all(V2 != "X")], by = V1]
# V1 V2 V3
# 1: HIJ P 40
# 2: HIJ Y 41
Run Code Online (Sandbox Code Playgroud)
2.
df[, .SD[.N == 1L], by = V1]
# V1 V2 V3
# 1: PKL X 32
Run Code Online (Sandbox Code Playgroud)
或者(更优化的版本)
indx <- df[, .(indx = .I[.N == 1L]), by = V1]$indx
df[indx]
# V1 V2 V3
# 1: PKL X 32
Run Code Online (Sandbox Code Playgroud)