R-条件替换

R-条件替换,r,replace,duplicates,conditional-statements,tibble,R,Replace,Duplicates,Conditional Statements,Tibble,我想在满足条件时替换TIBLE中的值 Data <- tibble(a = 1:5, b = c("a","b","a","a","a"), c = c("z","y","x","z","z"), d = c("m","n","m"

我想在满足条件时替换TIBLE中的值

Data <- tibble(a = 1:5,
b = c("a","b","a","a","a"), 
c = c("z","y","x","z","z"), 
d = c("m","n","m","m","m"),
e = c(1,3,4,7,2))

  a b c d e
1 1 a z m 1
2 2 b y n 3
3 3 a x m 4
4 4 a z m 7
5 5 a z m 2

这里有一个想法,针对修改后的要求进行了更新,
e
从具有最大
a
的行更新为
e
的值

三角帆
库(dplyr)
数据%>%
(b、c、d)组%>%
变异(e=e[which.max(a)],a=max(a))%>%
解组()
##tibble:5 x 5
#a、b、c、d、e
#       
#1 5 a z m 2
#2 b y n 3
#3安x 4米
#4 5 a z m 2
#5 a z m 2
当然,计算
e
a
的顺序是至关重要的:如果先计算
max(a)
,那么
e
将不知道
a
的哪个原始值是最大值

数据表
库(data.table)

cols在
base R
中,我们可以使用
ave

Data$a <- with(Data, ave(a, b, c, d, FUN = max))
Data$e <- with(Data, ave(e, b, c, d, FUN = max))

Data$a谢谢,tidyverse解决方案可以工作,但是对于E列不是最大值而是一个字符的情况呢?(1)从技术上讲,
max(字母)
仍然可以工作,所以不会出错。(2) 我真的不知道,我不知道数据,你从来没有暗示过这是可能的。听起来你的样本数据并不能真正代表你的实际数据?是的,这是我第一次提交StackOverflow,所以我不确定我需要包括什么:)我的问题是第5行实际上是5a z m 5,所以我希望第1行和第4行反映出这一点,因为第5行在a列中的值最大。再次抱歉,如果这不清楚,这是我第一次我不明白我建议的代码怎么会不起作用,即使有这样的更改。我建议您编辑您的问题以更新数据,并确保更新您的预期输出。谢谢谢谢你的建议:)希望编辑会让它更清楚:)对不起,我不知道那里发生了什么,看来我需要一些教训,在堆栈溢出。现在应该有意义了。看我的答案,我想这就是你现在需要的。你是绝对的英雄!你已经解决了一个我断断续续工作了几个月的问题,所以非常感谢你!!!慢慢来,但既然这是你的第一个问题。。。习惯上(甚至是“礼节”)通过选择首选答案和答案来结束问题;这样做不仅给回答者提供了一些观点,也为有类似问题的读者提供了一些结尾。虽然你只能接受一个答案,但你可以选择增加你认为有帮助的选票。再次强调,不要着急,确保这是你需要的。。。但请别忘了回来接受其中一个。谢谢
Data$a <- with(Data, ave(a, b, c, d, FUN = max))
Data$e <- with(Data, ave(e, b, c, d, FUN = max))