gpt4 book ai didi

r - 使用 data.frame 中的唯一行对另一个 data.frame 进行子集

转载 作者:行者123 更新时间:2023-12-04 23:52:30 28 4
gpt4 key购买 nike

我有一个数据框 v我想使用的唯一行

#v
DAY MONTH YEAR
1 1 1 2000
2 1 1 2000
3 2 2 2000
4 2 2 2000
5 2 3 2001

对数据框进行子集化 w .
# w
DAY MONTH YEAR V1 V2 V3
1 1 1 2000 1 2 3
2 1 1 2000 3 2 1
3 2 2 2000 2 3 1
4 2 2 2001 1 2 3
5 3 4 2001 3 2 1

结果是data.frame vw .只有 'w' 中的行与 (DAY, MONTH, YEAR) 中的唯一行(例如 v )匹配剩下的。
# vw
DAY MONTH YEAR V1 V2 V3
1 1 1 2000 1 2 3
2 2 2 2000 2 3 1

现在我正在使用下面的代码,在那里我合并了 data.frames然后使用 ddply只选择一行的 unqiue/第一个实例。这项工作,但如果我必须包括 V1=x$V1[1] 会变得很麻烦等用于我在 ddply 中的所有变量代码的一部分。有没有办法使用 (DAY, MONTH, YEAR) 的第一个实例?以及该行的其余列?

或者,还有其他方法可以解决使用来自 data.frame 的唯一行的问题吗?子集另一个 data.frame ?
v <- structure(list(DAY = c(1L, 1L, 2L, 2L, 2L), MONTH = c(1L, 1L, 
2L, 2L, 3L), YEAR = c(2000L, 2000L, 2000L, 2000L, 2001L)), .Names = c("DAY",
"MONTH", "YEAR"), class = "data.frame", row.names = c(NA, -5L
))

w <- structure(list(DAY = c(1L, 1L, 2L, 2L, 3L), MONTH = c(1L, 1L,
2L, 2L, 4L), YEAR = c(2000L, 2000L, 2000L, 2001L, 2001L), V1 = c(1L,
3L, 2L, 1L, 3L), V2 = c(2L, 2L, 3L, 2L, 2L), V3 = c(3L, 1L, 1L,
3L, 1L)), .Names = c("DAY", "MONTH", "YEAR", "V1", "V2", "V3"
), class = "data.frame", row.names = c(NA, -5L))

vw_example <- structure(list(DAY = 1:2, MONTH = 1:2, YEAR = c(2000L, 2000L),
V1 = 1:2, V2 = 2:3, V3 = c(3L, 1L)), .Names = c("DAY", "MONTH",
"YEAR", "V1", "V2", "V3"), class = "data.frame", row.names = c(NA,
-2L))

wv_inter <- merge(v, w, by=c("DAY","MONTH","YEAR"))

vw <- ddply(www,.(DAY, MONTH, YEAR),function(x) data.frame(DAY=x$DAY[1],MONTH=x$MONTH[1],YEAR=x$YEAR[1], V1=x$V1[1], V2=x$V2[1], V3=x$V3[1]))

最佳答案

 library(data.table)
v <- data.table(v)
w <- data.table(w)

setkey(v)
setkeyv(w, names(v))

# if you want to capture ALL unique values of `v`, use:
w[unique(v, by=NULL)]

# if you want only values that mutually exist in `v` and `w` use:
w[unique(v, by=NULL), nomatch=0L]

关于r - 使用 data.frame 中的唯一行对另一个 data.frame 进行子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20668951/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com