通过不同的标识符对数据框中的观察结果进行分类
Categorize observations in dataframe by different identifiers
我四处寻找这个问题的解决方案,但似乎找不到。
我使用 rtweet 包从丹麦议员那里提取了推文以访问 Twitter API。我使用 get_gimeline() 来提取数据。
get_timeline(c(politikere), n = 100, parse = TRUE, since_id = "1315756184247435264", max_id = "1333904927559725056", type = "recent") %>%
dplyr::filter(created_at > "2020-10-25" & created_at <="2020-12-01")
现在我想按派对 ID 对不同的 Twitter 用户进行分类,以便进行一些特定的情绪分析。
从 API 调用中,您可以将各种信息输入到 tibble 数据框中,例如“用户 ID”跨越大约 90 个不同的变量。
user_id
status_id
created_at
screen_name
text
description
...x_i
关键是我想在名为 party_id 的数据集中创建一个新列,并且我想根据每个用户所属的党派为每个用户分配一个新值:
我想创建一个列来标识党派关系。它应该看起来像这样:
user_id
status_id
created_at
screen_name
text
description
party_id
1234346
683901040
2020-11-23
larsen_mc
gg..
Danish MP..
Conservatives
我查看了 dplyr 包,但我不太明白如何将相同的值分配给不共享相同标识符的不同行。例如,如果所有保守派议员共享相同的 status_id,使用 inner_join 会更容易一些,但在这种情况下(当然)每个用户都有自己的唯一标识符。
这里是example_data
structure(list(user_id = c("2373406198", "4360080437", "3512158337",
"746909257", "36910691", "58550919", "279986859", "1225930531",
"26263965", "2222188479"), status_id = c("1354094283230474241",
"1354707826317393922", "1354391556900483072", "1347169543853117444",
"1354866447735005185", "1332633849659088897", "1355522537669734401",
"1355554489361686530", "1329028442105458688", "1330791375449829376"
), created_at = structure(c(1611676209, 1611822489, 1611747085,
1610025223, 1611860307, 1606559643, 1612016732, 1612024349, 1605700047,
1606120363), tzone = "UTC", class = c("POSIXct", "POSIXt")),
screen_name = c("jacobmark_sf", "RuneLundEL", "kimvalentinDK",
"TommyPetersenDK", "JuulMona", "Blixt22", "JanEJoergensen",
"RasmusJarlov", "StemLAURITZEN", "olebirkolesen")), row.names = c(NA,
-10L), class = c("tbl_df", "tbl", "data.frame"))
希望这是有道理的
最好的,
古斯塔夫
好的 - 我找到了解决方案!手动制作标识符后(称为 Parti_id),我使用了 tidyverse 包并使用了 left_join():
poldata <- poldata %>%
select(screen_name,Parti_id)
FTtweets <- left_join(tmlpol, poldata, by = "screen_name")
我四处寻找这个问题的解决方案,但似乎找不到。
我使用 rtweet 包从丹麦议员那里提取了推文以访问 Twitter API。我使用 get_gimeline() 来提取数据。
get_timeline(c(politikere), n = 100, parse = TRUE, since_id = "1315756184247435264", max_id = "1333904927559725056", type = "recent") %>%
dplyr::filter(created_at > "2020-10-25" & created_at <="2020-12-01")
现在我想按派对 ID 对不同的 Twitter 用户进行分类,以便进行一些特定的情绪分析。 从 API 调用中,您可以将各种信息输入到 tibble 数据框中,例如“用户 ID”跨越大约 90 个不同的变量。
user_id | status_id | created_at | screen_name | text | description | ...x_i |
---|
关键是我想在名为 party_id 的数据集中创建一个新列,并且我想根据每个用户所属的党派为每个用户分配一个新值: 我想创建一个列来标识党派关系。它应该看起来像这样:
user_id | status_id | created_at | screen_name | text | description | party_id |
---|---|---|---|---|---|---|
1234346 | 683901040 | 2020-11-23 | larsen_mc | gg.. | Danish MP.. | Conservatives |
我查看了 dplyr 包,但我不太明白如何将相同的值分配给不共享相同标识符的不同行。例如,如果所有保守派议员共享相同的 status_id,使用 inner_join 会更容易一些,但在这种情况下(当然)每个用户都有自己的唯一标识符。
这里是example_data
structure(list(user_id = c("2373406198", "4360080437", "3512158337",
"746909257", "36910691", "58550919", "279986859", "1225930531",
"26263965", "2222188479"), status_id = c("1354094283230474241",
"1354707826317393922", "1354391556900483072", "1347169543853117444",
"1354866447735005185", "1332633849659088897", "1355522537669734401",
"1355554489361686530", "1329028442105458688", "1330791375449829376"
), created_at = structure(c(1611676209, 1611822489, 1611747085,
1610025223, 1611860307, 1606559643, 1612016732, 1612024349, 1605700047,
1606120363), tzone = "UTC", class = c("POSIXct", "POSIXt")),
screen_name = c("jacobmark_sf", "RuneLundEL", "kimvalentinDK",
"TommyPetersenDK", "JuulMona", "Blixt22", "JanEJoergensen",
"RasmusJarlov", "StemLAURITZEN", "olebirkolesen")), row.names = c(NA,
-10L), class = c("tbl_df", "tbl", "data.frame"))
希望这是有道理的
最好的, 古斯塔夫
好的 - 我找到了解决方案!手动制作标识符后(称为 Parti_id),我使用了 tidyverse 包并使用了 left_join():
poldata <- poldata %>%
select(screen_name,Parti_id)
FTtweets <- left_join(tmlpol, poldata, by = "screen_name")