gpt4 book ai didi

r - 基于子集比较两个字符

转载 作者:行者123 更新时间:2023-12-04 05:33:34 25 4
gpt4 key购买 nike

我有一个包含两列的简单数据框:

df <- data.frame(x = c(1,1,2,2,3), 
y = c(rep(1:2,2),1),
target = c('a','a','a','b','a'))

我想在 x 的每个级别(x 的相同数字)内比较目标列中的字符串(找出它们是否相等,即 TRUE 或 FALSE)。
首先,我想比较第 1 行和第 2 行,然后比较第 3 行和第 4 行...
我的问题是我遗漏了一些比较,例如,第 5 行只有一种情况而不是两种情况——所以结果应该是 FALSE。
变量 y 表示 x 中的第一种和第二种情况。

我玩过 ddply 做类似的事情:
ddply(df, .(x), summarise,
ifelse(as.character(df[df$y == '1',]$target),
as.character(df[df$y == '2',]$target),0,1))

这是丑陋的......
并且不起作用...

任何见解如何实现这种比较?

谢谢

最佳答案

ddply(df, .(x), function(d) NROW(d) == 2 & d$target[1] == d$target[2])

这假设您希望该值仅在恰好有 2 行具有该“x”值时才为 TRUE。如果可能有 3 个或更多,并且您希望它为 TRUE,如果所有 target值相同,您可以执行以下操作:
ddply(df, .(x), function(d) NROW(d) > 1 & length(unique(d$target)) == 1)

关于r - 基于子集比较两个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12271536/

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