R - 如何根据匹配的行创建新的数据框

发布于 2025-01-17 11:56:37 字数 1399 浏览 1 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寄离 2025-01-24 11:56:37

如果没有可重现的示例,这是一项艰巨的任务。我使用gapminder数据来尝试解决您的问题:

数据

gapminder %>% select(country, year, lifeExp) %>% 
  filter(year %in% c(1952, 1977)) %>%
  pivot_wider(names_from = year, values_from = lifeExp) %>%
  mutate(difference = abs(`1952`- `1977`))

输出

# A tibble: 142 x 4
   country     `1952` `1977` difference
   <fct>        <dbl>  <dbl>      <dbl>
 1 Afghanistan   28.8   38.4       9.64
 2 Albania       55.2   68.9      13.7 
 3 Algeria       43.1   58.0      14.9 
 4 Angola        30.0   39.5       9.47
 5 Argentina     62.5   68.5       6.00
 6 Australia     69.1   73.5       4.37
 7 Austria       66.8   72.2       5.37
 8 Bahrain       50.9   65.6      14.7 
 9 Bangladesh    37.5   46.9       9.44
10 Belgium       68     72.8       4.8 
# ... with 132 more rows

转换为您的(假定的)dataframe,可能是:

dataframe %>% select(Year, Country, percentagecolumn) %>% 
  filter(year %in% c(1990, 2019)) %>% 
  pivot_wider(names_from = Year, values_from = percentagecolumn) %>% 
  mutate(percentage_difference = abs(`1990`- `2019`))

Without a reproducible example that's a difficult task to perform. I used the gapminder data to try to solve your problem:

Data

gapminder %>% select(country, year, lifeExp) %>% 
  filter(year %in% c(1952, 1977)) %>%
  pivot_wider(names_from = year, values_from = lifeExp) %>%
  mutate(difference = abs(`1952`- `1977`))

Output

# A tibble: 142 x 4
   country     `1952` `1977` difference
   <fct>        <dbl>  <dbl>      <dbl>
 1 Afghanistan   28.8   38.4       9.64
 2 Albania       55.2   68.9      13.7 
 3 Algeria       43.1   58.0      14.9 
 4 Angola        30.0   39.5       9.47
 5 Argentina     62.5   68.5       6.00
 6 Australia     69.1   73.5       4.37
 7 Austria       66.8   72.2       5.37
 8 Bahrain       50.9   65.6      14.7 
 9 Bangladesh    37.5   46.9       9.44
10 Belgium       68     72.8       4.8 
# ... with 132 more rows

Translated to your (presumed) dataframe that might be:

dataframe %>% select(Year, Country, percentagecolumn) %>% 
  filter(year %in% c(1990, 2019)) %>% 
  pivot_wider(names_from = Year, values_from = percentagecolumn) %>% 
  mutate(percentage_difference = abs(`1990`- `2019`))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文