r - 如何连接两个具有不同类型数据的数据?

标签 r left-join

假设我有两个数据。 一个是这样的:

names |height
------|------
"ab"  |176
------|--------
"aa"  |168
------|--------
"ac"  |189
------|--------
"ad"  |179

另一个是这样的:

names           weight
c("aa","ab")    58
c("ac","ae")    70
"ad"            68

所以第二个名字是列表,但第一个名字只是向量。 我想做这样的:

names  height  weight
"ab"   176     58
"aa"   168     58
"ac"   189     70
"ad"   179     68

我尝试使用 left_join,但没有成功。 我还尝试将列表制作为矢量。 当我将列表制作为向量时,问题是长度彼此不同。 拜托,你能帮我吗??? 这是我在 stackoverflow 上的第一个问题。

添加我的代码

names<-c("ab","aa","ac","ad")
height<-c(176,168,189,179)
data1<-cbind(names,height)
names<-list(c("aa","ab"),c("ac","ae"),"ad")
weight<-c(58,70,68)
data2<-cbind(names,weight)
data1<-as.data.frame(data1) ;data1;str(data1)
data2<-as.data.frame(data2) ;data2;str(data2)
data2 %>%

取消嵌套%>% left_join(.,data1, by = "姓名")

最佳答案

我们可以使用 tidyverse 假设“names”列是第二个数据集中的列表。使用unnest,将其转换为向量,然后使用第一个数据集by 'names'left_join >

library(tidyverse)
df2 %>%
   unnest %>%
   left_join(df1, ., by = "names") 
#   names height weight
#1    ab    176     58
#2    aa    168     58
#3    ac    189     70
#4    ad    179     68

数据

df1 <- data.frame(names = c("ab", "aa", "ac", "ad"),
  height = c(176, 168, 189, 179), stringsAsFactors = FALSE)

df2 <- data.frame(names = I(list(c("aa", "ab"), c("ac", "ae"), "ad")),
  weight = c(58, 70, 68))

关于r - 如何连接两个具有不同类型数据的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45994395/

相关文章:

r - 如何从 data.frame 中提取单个列作为 data.frame?

python - error install rpy2 : 'sh' is not recognized as an internal or external command, 可运行程序或批处理文件

R Shiny : Display Multiple Inputs and Text

php - 使用灵活的 where 子句将 LEFT JOIN 结果限制为 1

mysql - SQL 对获奖者进行计数并包括 0 个获奖者

sql - postgresql:需要一个sql查询来查找一个类别有多少帖子

r - 为什么使用 ggscatter 会导致基金(从左到右)错误?

r - 分隔 R 数据框列忽略引号中的逗号

mysql - 对两个 MySQL 查询执行左外连接?

mysql - 在mysql中连接来自同一个表的两个字段