将值从一个数据帧传输到另一个数据帧 [英] Transfer values from one dataframe to another
本文介绍了将值从一个数据帧传输到另一个数据帧的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
value< - seq(1,100,length.out = 20)
df1< - data.frame(id = as.character(1:20),
value = value,
stringsAsFactors = F)
我有一个第二个数据框看起来像这样
df2< - data.frame(id = as.character(c(1:5,21:23)),
v2 = NA,
stringsAsFactors = F)
我需要从 df1
转移到 df2
,但仅在 df1 $ id == df2 $ id
之间。所以我需要的数据框是:
df2Needed< - data.frame(id = as.character(c(1:5 ,21:23)),
pre>
v2 = c(value [1:5],NA,NA,NA),
stringsAsFactors = F)
有没有办法这样做?
解决方案使用
data.table
:require(data.table)
dt1 < - data.table(df1,key =id)
dt2 < - data.table(df2)
dt1 [dt2 $ id,value]
#id值
#1:1 1.000000
#2:2 6.210526
#3:3 11.421053
#4:4 16.631579
#5 :5 21.842105
#6:21 NA
#7:22 NA
#8:23 NA
或使用base
merge
as @TheodoreLytras在评论中提到:#你不需要在df2
合并中有`v2`列(df2,df1,by =id,all.x = T,sort = F)
#id v2 value
#1 1 NA 1.000000
#2 2 NA 6.210526
#3 3 NA 11.421053
#4 4不适用16.631579
#5 5 NA 21.842105
#6 21 NA NA
#7 22 NA NA
#8 23 NA NA
I have two data frames. The first looks like this:
value <- seq(1, 100, length.out=20) df1 <- data.frame(id=as.character(1:20), value=value, stringsAsFactors=F)
I have a second dataframe that looks like this
df2 <- data.frame(id=as.character(c(1:5, 21:23)), v2=NA, stringsAsFactors=F)
I need the values transferring from
df1
todf2
, but only wheredf1$id == df2$id
. So the dataframe I need is:df2Needed <- data.frame(id=as.character(c(1:5, 21:23)), v2=c(value[1:5], NA, NA, NA), stringsAsFactors=F)
Is there a way to do this?
解决方案Using
data.table
:require(data.table) dt1 <- data.table(df1, key="id") dt2 <- data.table(df2) dt1[dt2$id, value] # id value # 1: 1 1.000000 # 2: 2 6.210526 # 3: 3 11.421053 # 4: 4 16.631579 # 5: 5 21.842105 # 6: 21 NA # 7: 22 NA # 8: 23 NA
or using base
merge
as @TheodoreLytras mentioned under comment:# you don't need to have `v2` column in df2 merge(df2, df1, by="id", all.x=T, sort=F) # id v2 value # 1 1 NA 1.000000 # 2 2 NA 6.210526 # 3 3 NA 11.421053 # 4 4 NA 16.631579 # 5 5 NA 21.842105 # 6 21 NA NA # 7 22 NA NA # 8 23 NA NA
这篇关于将值从一个数据帧传输到另一个数据帧的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文