如何将来自if语句的打印结果存储为数据帧?

时间:2016-08-09 10:52:00

标签: r

我想将if语句的打印结果设置为数据帧以供以后使用。

例如,

如果我跑,

for(i in 1:nrow(user)){
 for(j in 1:nrow(user_info)){
     if(user[i,1]==user_info[j,1])
          df<-print(user_info[j,1:3])
  }
}

控制台显示,

1 roles user guest
     1    1    15
2 roles user guest
     2    1    367
3 roles user guest
     3    1    648

当我打电话给'df'时,它只显示最后的结果。

 roles user guest
   3     1     648

如果我想让'df'像这样,我如何将完整结果存储为数据框?

roles user guest
 1    1    15
 2    1    367
 3    1    648

为了澄清问题,这里是样本数据。 我尝试了所有评论,但问题还没有解决..

  • user[user[,1] %in% user_info[,1], 1:3]:输出与预期输出不匹配。
  • merge和rbind:只存储一行,而不是完整数据。

用户:

roles  action  created_at
  10      1     2016-08-01
  10      1     2016-08-01
  1       1     2016-08-01
  3       2     2016-08-01
  4       1     2016-08-01
  5       1     2016-08-01
  5       2     2016-08-02
  8       1     2016-08-02
  9       1     2016-08-02
  7       2     2016-08-02

USER_INFO:

roles user guest
  1     1    15
  2     1    367
  3     14   42
  4     2    34
  5     4    2
  6     3    100
  7     23   32
  8     9    49  
  9     55   12
  10    8    291

2 个答案:

答案 0 :(得分:1)

合并怎么样?

merge(user_info, user, by = "role")[, 1:3]

答案 1 :(得分:0)

您可以尝试 rbind 吗?

for(i in 1:nrow(user)){
 for(j in 1:nrow(user_info)){
     if(user[i,1]==user_info[j,1])
          user_info<-print(user_info[j,1:3])
          df<-rbind(df,user_info)
  }
}