我有一些数据要在R中透视。但是当我运行代码时,我得到了一个无法子集化不存在的列的错误。我的数据目前看起来像这样,但是,有数百个不同的标题,而不是像下面我的简化数据看起来的那样只有三个。
ID Title Training_Time Percent_Complete
1 New 1 100
1 Hazmat 5 100
1 Management 12 100
我希望它看起来像这样,如果可能的话,还包括完成百分比列,尽管我可以凑合着用几天的时间来完成培训,就像我下面的。
ID Training_New Training_Hazmat Training_Managerment
1 1 5 12
基于stackoverflow对类似问题的回答,我尝试了下面代码的几个不同版本。
LMS_df <- LMS_df %>%
tidyr::pivot_wider(-ID,
names_from = LMS_df$Title,
values_from = LMS_df$Training_Time
)
有什么建议可以消除这个错误吗?我需要为数据集中的每个培训标题创建新列吗?
3条答案
按热度按时间mec1mxoz1#
下面是一个可复制的小例子,来自于原创者提供的数据。不需要美元语法的数据框名称(即
LMS_df$
)。没有美元语法,它就可以工作到目前为止。可以用names_prefix = "Training_"
添加名称前缀:创建于2023年3月9日,使用reprex v2.0.2
最后一点:这是一种特殊情况,因为对于所有
Title
,Percent_Complete
都等于100。否则,您将为每个百分比获得单独的行,并为所有不匹配的情况获得NA
。cmssoen22#
一种可能的方法是:
xwbd5t1u3#
data.table
的选项