我正在寻找使用功能来加快数据清理过程。在显示的示例中,如果当天的“.no”列的值为 1,我希望删除 am 和 pm 列中报告的值。
df1 = data.frame (identifier = c(1:4),
mon.no = c(1,NA,NA,NA),mon.am = c(2,1,NA,3),mon.pm = c(3,4,NA,5),
tues.no = c(NA,NA,1,NA),tues.am = c(2,3,1,4),tues.pm = c(3,3,2,3))
我设想使用一个函数来清理数据:
clean1 = function (day) {
df1$day.am[df1$day.no==1] = NA
df1$day.pm[df1$day.no==1] = NA
return (df1)}
df2 = clean1(mon)
但是,这会返回以下错误。
Error in `$<-.data.frame`(`*tmp*`, "day.am", value = logical(0)) :
replacement has 0 rows, data has 4
我认为这是因为该函数需要一个完整的列名并且无法填补文本输入周围的空白?是否可以以这种方式使用功能?
阅读了这些笔记后,我认为将我的数据整理成一个整洁的格式会是更好的做法,并且正在研究一种涉及重新组织我的数据的解决方案。但是,在数据处于原始格式时能够执行此操作也很方便。
谢谢。