【发布时间】:2021-05-12 05:44:10
【问题描述】:
我有两个数据框 -
一个数据框有一列包含音乐艺术家列表(每行一位艺术家)。有 10K 行。该数据包含每位艺术家的人口统计数据(国家、年龄)。
| Artist. | Age | Country |
|---|---|---|
| Drake | 34 | CA |
| Snoop Dogg | 49 | US |
还有另一个数据框,其中包含一列艺术家及其歌曲。 - 32,000 行此数据
| Artist. | Song Name |
|---|---|
| [Snoop Dogg, Daz Dillinger] | Song name 1 |
| [Second] | Song name 2 |
我无法将第一个数据帧中的艺术家匹配到第二个数据帧,因为在第二个数据帧中有 Snoop Dogg 和其他艺术家。我尝试使用 grepl 运行一些代码,根据艺术家的第一个数据框列创建了一个向量,以匹配第二个数据框中的 Artist 列,但它运行“内存不足”。我也取消了数据嵌套,但它给了我一个很大的错误,如下所示:
错误:必须使用有效的下标向量对列进行子集化。 x 下标的类型错误data.frame< X : integer index : integer artist : character gender : character age : integer type : character country : character city_1 : character district_1: character city_2 : character district_2: character city_3 : character district_3: character >。 ℹ 必须是数字或字符。运行 `rlang::last_error()
所需的输出如下:
| Artist. | Song Name | Artist_Matched | Age | Country |
|---|---|---|---|---|
| [Snoop Dogg, Daz Dillinger] | Song name 1 | Snoop Dogg | 49 | US |
| [Second] | Song name 2 |
我尝试过的一些代码 -
df3
grepl(paste(art_v, collapse = "|"), df3$art) 中的错误:正则表达式无效,原因是“内存不足”
非常感谢您的帮助!
我还没有为此尝试过 python。我所有的代码都在 R 中,但如果你有关于如何在 python 中执行此操作的建议,请务必打开它!
【问题讨论】:
-
不要写
== True,这是无意义的代码。