我正在尝试获取长格式的 Dataframe 。目前,它是一个有1个观测值和〉250个变量的 Dataframe ,看起来像这样:
| 用户0标识|用户0名称|用户0性别|用户1标识|用户1名称|用户1性别|用户2标识|用户2名称|用户2性别|
| - ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|- ------|
| 十六|米勒|雌性|五十二|铁匠|男性|三十三|坦率|雌性|
同时,我只想创建一个 Dataframe ,如下所示:
| 身份证|姓名|性|
| - ------|- ------|- ------|
| 十六|米勒|雌性|
| 五十二|铁匠|男性|
| 三十三|坦率|雌性|
我已经尝试过通过应用以下代码来重命名df中的列名以使其匹配
names(df) <- sub('^users_', '', names(df))
names(df) <- sub('^[0-9.]+', '', names(df))
names(df) <- sub('^_', '', names(df))
之后,我一直试图使用melt将其转换为长格式,结果要么乘以obs,要么完全混淆了 Dataframe 。
df <- melt(setDT(df), id.vars = c("id","name"), variable.name = "data")
df <- melt(df, id.vars=c("id", "name", "sex"))
这是我第一次在stackoverflow上提问,所以任何关于如何让未来的问题更容易理解的建议都是非常受欢迎的!感谢任何花时间阅读本文的人。
2条答案
按热度按时间des4xlb01#
其中
df
为:ztyzrc3y2#
我将使用tidyr(https://tidyr.tidyverse.org/reference/pivot_longer.html)包中的pivot_longger函数
这可能是一个更长的方法,首先你需要对一个变量,如性别,然后再对其他类的变量,如姓名,也许有人会知道一个更快的方法来做。