当前位置: 首页 > 知识库问答 >
问题:

如何向R中的每个不同观察添加一组行

逄嘉禧
2023-03-14

我希望在R中自动化一个过程,这个过程以前是手工完成的,非常耗时。我想从一个数据帧向另一个数据帧中的每个唯一变量添加一系列观察结果。使用数据的示例可能会更好地说明这一点。。。

表1包含了对每种动物的大量观察,这是我想为每种动物添加一组行的表。

表2显示了应应用于每只动物的行。

最后一个表应该如下所示:

有人能给我指出正确的方向吗?优先使用tidyverse超过基本R(但不是必需的:))

共有2个答案

许胡非
2023-03-14

使用交叉

library(dplyr)
library(tidyr)
crossing(d2, an = d1$an) %>% 
    full_join(d1)
Joining, by = c("cl", "tm", "an")
# A tibble: 9 × 3
  cl    tm    an   
  <chr> <chr> <chr>
1 be    cn    c    
2 be    cn    d    
3 br    cn    c    
4 br    cn    d    
5 wh    cn    c    
6 wh    cn    d    
7 bl    cl    c    
8 be    an    d    
9 wh    pl    c    
d1 <- structure(list(an = c("c", "d", "c"), cl = c("bl", "be", "wh"
), tm = c("cl", "an", "pl")), class = "data.frame", row.names = c(NA, 
-3L))

d2 <- structure(list(cl = c("br", "be", "wh"), tm = c("cn", "cn", "cn"
)), class = "data.frame", row.names = c(NA, -3L))
谭兴学
2023-03-14

1.我们创建了一个易于使用且可复制的示例数据

d1 <- data.frame(an = c("c", "d", "c"), 
                 cl = c("bl", "be", "wh"),
                 tm = c("cl", "an", "pl"))

d2 <- data.frame(cl = c("br", "be", "wh"),
                 tm = "cn")

2.使用expand_grid结合tidyr::full_join将data.framed1扩展到所需的形式:

library(dplyr)
library(tidyr)

d1 %>% 
  full_join(expand_grid(d2, an = unique(d1$an)))

这将返回:

  an cl tm
1  c bl cl
2  d be an
3  c wh pl
4  c br cn
5  d br cn
6  c be cn
7  d be cn
8  c wh cn
9  d wh cn
 类似资料:
  • 对于LiveData和MVVM架构,我完全是个新手。我想知道如何观察一个实时数据 我通过以下方式从我的房间数据库中获取实时数据: 我希望ViewModel中的另一个变量,,在列表返回空(null)时进行更新。这将用于从Visible更新片段中的ImageView。去看电视了。看得见的 我如何检查如果是空的同步? 我四处阅读,看到一些人说使用,但是架构指南明确建议不要使用ViewModel中的任何观

  • 我如何在RxJava中创建一个从不同的地方完成的对象(未来),但我想要向某个客户端返回一个可观察的对象?

  • 如何深入观察数组中的对象? 有一个现场演示:http://jsfidle.net/syx9b/

  • 我对rxjava还是个新手,刚刚开始学习它,并将我们的android项目转换为RX。所以我编写了Observable并使用flatmaps将它们链接起来,以调用API并返回一个Observable。现在,在主活动中,我订阅它们,并将我的UI代码添加到onNext、onSubscribe、onComplete和onError(如果适用)中。但是我有多个api,我为每个api都创建了一个observa

  • 我有一个表,表中有一些列。两列有组合框,现在我想做的是,当用户从column1组合框中选择一些值时,根据用户选择的值,应该填充column2组合框。例如,如果用户从column1组合框中选择value1,则column2组合框将仅显示与value1对应的值。