R:根据条件从数据框中选择行
我有以下数据帧 用户详细信息: 用户\u事务\u计数:R:根据条件从数据框中选择行,r,R,我有以下数据帧 用户详细信息: 用户\u事务\u计数: +-------------+-----------+ |名称|频率| +-------------+-----------+ |约翰·多伊| 2| |无名氏| 5| |杰克·拉塞尔| 2| +-------------+-----------+ 我想做的是获取具有最多事务的用户的详细信息。 在上面的例子中,Jane Doe拥有最多的事务,因此我需要将她的详细信息提取到数据帧中 我尝试了以下代码: User_details[which(
+-------------+-----------+
|名称|频率|
+-------------+-----------+
|约翰·多伊| 2|
|无名氏| 5|
|杰克·拉塞尔| 2|
+-------------+-----------+
我想做的是获取具有最多事务的用户的详细信息。
在上面的例子中,Jane Doe拥有最多的事务,因此我需要将她的详细信息提取到数据帧中
我尝试了以下代码:
User_details[which(user_details$Name = User_Transaction_Count[(which.max(User_Transaction_Count$Frequency)),]$Name)]
但我得到了这个错误:
错误:在“ad_maxState”中出现意外的“=”代码:
User_details[User_details$Name==User_transaction_Count[max(User_transaction_Count$Frequency),]$Name,]$Name
我对T.Ciffréo的答案做了一些更改,并找到了解决方案:
User_details[User_details$Name==as.character(User_transaction_Count[which.max(User_transaction_Count$Frequency),]$Name),]
要确定具有最大频率的用户,我们可以使用:
with(User_Transaction_Count,Name[[which.max(Frequency)]])
但是,如果User
列使用的是factor()
数据类型(这通常是默认值),则需要将其转换为字符串以用于查找。否则,一个data.frame
中“John Doe”的内部值可能与另一个中的“John Doe”不同
maxUser <- as.character(with(User_Transaction_Count,Name[[which.max(Frequency)]]))
如果表非常大,这可能需要很长时间,因此最好为此创建一个索引
#build index
library(hash)
userIdx <- hash(as.character(User_Details$Name),1:nrow(User_Details))
#use index
maxUser <- as.character(with(User_Transaction_Count,Name[[which.max(Frequency)]]))
result <- User_Details[userIdx[[maxUser]],]
=
正在分配。您需要比较=
您还可以使用合并(子集(用户\u事务\u计数,频率==max(频率),名称),用户\u详细信息)
。我为您的代码得到以下错误:Ops.factor中的错误(意外死亡$State,State\u Count)[which.max(State\u Count$Freq),:因子的级别集不同可能我忘记了唯一性()如下:User\u details[User\u details$Name==unique(User\u transaction\u Count[max(User\u transaction\u Count$Frequency),]$Name),]$Name
result <- User_Details[User_Details$Name == maxUser,]
#build index
library(hash)
userIdx <- hash(as.character(User_Details$Name),1:nrow(User_Details))
#use index
maxUser <- as.character(with(User_Transaction_Count,Name[[which.max(Frequency)]]))
result <- User_Details[userIdx[[maxUser]],]
> result
Name Address Phone
2 Jane Doe Somewhere 234567891