首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据传输

数据传输
EN

Stack Overflow用户
提问于 2014-04-01 17:58:12
回答 1查看 242关注 0票数 0

我经常需要在数据文件之间传输数据。数据来源的数据通常是数据的一个较小的子集。

让我说我有这个数据:

代码语言:javascript
复制
df <- data.frame(ID = c(1,3,6,9), variable = c(-0.1, 0, 0, 0.1))

  ID variable
1  1     -0.1
2  3      0.0
3  6      0.0
4  9      0.1

我需要将variabledf传输到sleep,但只在IDdfsleep中相同的行中。

为此,我通常使用如下的for循环:

代码语言:javascript
复制
    sleep$variable <- NA
       for (i in seq_along(sleep$ID)) {
         x <- which(sleep$ID  == df$ID[i])
         sleep$variable[x] <- df$variable[i]
       }

sleep

   extra group ID variable
1    0.7     1  1     -0.1
2   -1.6     1  2       NA
3   -0.2     1  3      0.0
4   -1.2     1  4       NA
5   -0.1     1  5       NA
6    3.4     1  6      0.0
7    3.7     1  7       NA
8    0.8     1  8       NA
9    0.0     1  9      0.1
10   2.0     1 10       NA
11   1.9     2  1     -0.1
12   0.8     2  2       NA
13   1.1     2  3      0.0
14   0.1     2  4       NA
15  -0.1     2  5       NA
16   4.4     2  6      0.0
17   5.5     2  7       NA
18   1.6     2  8       NA
19   4.6     2  9      0.1
20   3.4     2 10       NA

我正在寻找一个函数,它将实现相同的结果,但需要更少的代码。理想情况下,我希望函数只使用3个参数:数据来自的向量、数据指向的向量以及用于匹配两个数据流中的行的向量。

在R中是否存在这样的功能?或者,有人能提供这样的功能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-01 18:20:40

match怎么样?

代码语言:javascript
复制
sleep <- data.frame(extra = runif(100), group = rep(1:10, each = 10), ID = rep(1:10, times = 10))

sleep$variable <- df$variable[match(sleep$ID, df$ID)]

这需要四个参数(ID被重复,可以说是不必要的)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22793341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档