r - 跨不同事件比较用户帐户

时间:2015-11-20 16:20:31

标签: r

我有多个数据框,每个数据框由一个变量(列)和几千个观察(行)组成。字符值是为特定事件/ time_span生成的Twitter帐户的屏幕名称。

tweets <- parseTweets("Event_X.json", verbose = FALSE)
screen_names <- tweets$screen_names
names.df <- as.data.frame(screen_names)
names_unique <- unique(names.df)
head(names_unique)

          Screen_Names_Event_X 
    1     Account_A 
    2     Account_B 
    9     Account_C 
   10     Account_D
  ...     ...

另一个数据框示例:

          Screen_Names_Event_Z
    1     Account_F
    2     Account_Z
    7     Account_P
    12    Account_A
    ...   ...

现在,我想创建一个矩阵或数据框,以找出不同事件中哪个帐户处于活动状态。我不太清楚如何做到这一点。我正在寻找这样的解决方案:

  Screen_Names   Event_X    Event_Y    Event_Z
  Account_A      TRUE       FALSE      TRUE
  Account_B      TRUE       TRUE       FALSE
  Account_F      FALSE      TRUE       FALSE      

1 个答案:

答案 0 :(得分:0)

由于您的例子不可复制,因此很难完成一个完整的工作代码。但是你应该创建一个data.frame,其中一列代表名称,另一列只有一列代表。

data_frame_1 <- data.frame(acc_name = c("Account_1","Account_2","Account_10"),check1 =1)
data_frame_2 <- data.frame(acc_name = c("Account_3","Account_1","Account_4","Account_10"),check2 =1)
data_frame_3 <- data.frame(acc_name = c("Account_6","Account_7","Account_2","Account_10"),check3 =1)

data_frame_all <- Reduce(function(x, y) merge(x, y, all=TRUE), list(data_frame_1, data_frame_2, data_frame_3))
final <- data.frame(data_frame_all$acc_name, !is.na(data_frame_all[,colnames(data_frame_all)!="acc_name"]))
final

  data_frame_all.acc_name check1 check2 check3
1               Account_1   TRUE   TRUE  FALSE
2              Account_10   TRUE   TRUE   TRUE
3               Account_2   TRUE  FALSE   TRUE
4               Account_3  FALSE   TRUE  FALSE
5               Account_4  FALSE   TRUE  FALSE
6               Account_6  FALSE  FALSE   TRUE
7               Account_7  FALSE  FALSE   TRUE

编辑: 为了使其与您的代码一起使用,我们的想法是使用您的帐户列表创建数据框,如下所示:

tweets <- parseTweets("Event_X.json", verbose = FALSE)
screen_names <- tweets$screen_names
names.df <- as.data.frame(screen_names)
names_unique <- unique(names.df)
data_frame_1 <- data.frame(acc_name = names_unique, Event_X = 1)

对每个事件执行相同操作,然后使用第一个代码的其余部分合并数据框。