Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:根据条件从数据框中选择行_R - Fatal编程技术网

R:根据条件从数据框中选择行

R:根据条件从数据框中选择行,r,R,我有以下数据帧 用户详细信息: 用户\u事务\u计数: +-------------+-----------+ |名称|频率| +-------------+-----------+ |约翰·多伊| 2| |无名氏| 5| |杰克·拉塞尔| 2| +-------------+-----------+ 我想做的是获取具有最多事务的用户的详细信息。 在上面的例子中,Jane Doe拥有最多的事务,因此我需要将她的详细信息提取到数据帧中 我尝试了以下代码: User_details[which(

我有以下数据帧

用户详细信息:

用户\u事务\u计数:

+-------------+-----------+
|名称|频率|
+-------------+-----------+
|约翰·多伊| 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