如何使用R重塑此数据帧?

如何使用R重塑此数据帧?,r,reshape,R,Reshape,我是R新手,需要一些帮助来重塑数据帧,该数据帧类似于下面的数据帧: 公司名称 年 利润(美元) 利润欧元 利润(英镑) A. 2017 1237 1006 871 B 2017 1337 1096 949 A. 2018 1143 937 811 B 2018 1288 1056 914 假设您的数据存储在对象df中: library(tidyverse) df %>% pivot_longer(cols = starts_with("profit"),

我是R新手,需要一些帮助来重塑数据帧,该数据帧类似于下面的数据帧:

公司名称 年 利润(美元) 利润欧元 利润(英镑) A. 2017 1237 1006 871 B 2017 1337 1096 949 A. 2018 1143 937 811 B 2018 1288 1056 914
假设您的数据存储在对象
df
中:

library(tidyverse)

df %>%
  pivot_longer(cols      = starts_with("profit"),
               names_sep = "_",
               names_to  = c("delete", "currency"),
               values_to = "profit") %>%
  select(-delete)

除了德申的答案

library(tidyr)

#long format
df <- pivot_longer(df, cols = c("profit_usd", "profit_eur", "profit_gbp"), names_to = "currency", values_to = "profit")

#removes profit_ from your currency column
df$currency <- gsub("profit_", "", df$currency)

library(tidyr)
#长格式

df如果您提供的数据不在表中,例如使用
dput(YOURDATA)
或如果数据太大
dput(head(YOURDATA))
,这将很有帮助。另外:@deschen谢谢你的提示-我以后会记住的questions@zx8754当前位置我投票赞成重新提出这个问题。并非所有关于重塑主题的问题都能通过你链接的这篇帖子得到解答。也就是说,在这种情况下,我们可以很好地利用
pivot\u longer
中的
names\u sep
参数,这在您链接的帖子中不是一个可行的选项。我同意它标记的帖子没有涵盖这一点,但这肯定是以前发布过的问题。而且似乎是更好的目标@zx8754您想添加其中任何一个吗?@camille感谢您提供更新的链接。这很有效,谢谢!请随意将它(或任何其他您认为有用的答案)标记为您已接受的答案,以便其他人可以从中受益。感谢您的答案和提示-我将继续记住这一点!