排序表的唯一参数

时间:2016-03-17 11:39:15

标签: r

我有一个名为myTable(输入)的表:

 user_name   session_num  
1     "Joe"            1    
2     "Tom"            2    
3    "Fred"            1    
4     "Tom"            1    
5     "Joe"            2    
6     "John"           1 

我想知道有多少user_id只有 session_num = 1(输出):

   user_name   session_num   
1     "Fred"             1
2     "John"             1

4 个答案:

答案 0 :(得分:8)

以下是使用data.table

的可能解决方案
library(data.table)
setDT(df)[, if(all(session_num == 1)) .SD, by = user_name]
#    user_name session_num
# 1:      Fred           1
# 2:      John           1

另一个选择是尝试反连接

df[session_num == 1][!df[session_num != 1], on = "user_name"]
#    user_name session_num
# 1:      Fred           1
# 2:      John           1

答案 1 :(得分:5)

dplyr的可比解决方案:

library(dplyr)
myTable %>%
  group_by(user_name) %>%
  filter(all(session_num == 1))

给出:

  user_name session_num
     (fctr)       (int)
1      Fred           1
2      John           1

答案 2 :(得分:3)

或者,我们可以使用1 R简单地排除会话编号不是base的所有用户。

# User's with session number other than 1
two <- myTable$user_name[myTable$session_num != 1] 

# Exclude them
myTable[!myTable$user_name %in% two,]
#  user_name session_num
#3      Fred           1
#6      John           1

答案 3 :(得分:0)

这是一个2行答案:

session_num==1

首先它会查看谁只在数据集中一次,然后再查看那些while($row2=mysqli_fetch_array($result2)) { $first=$row2['MDid']; $second=$row2['MD_FullName']; $data=array($first=>$second); } var_dump($data); 的子集。