我目前有一个数据帧,其中有几行我想转换为"NA".当我第一次从.csv导入这个数据帧时,我可以使用na.strings = c("A","B","C)等来删除我不想要的值.
我想再次做同样的事情,但这次使用的是数据帧,而不是导入另一个.csv
要导入数据,我用过:
data<-read.csv("code.csv", header=T, strip.white=TRUE, stringsAsFactors=FALSE, na.strings=c("", "A", "B", "C"))
Run Code Online (Sandbox Code Playgroud)
现在,使用"数据",我想在删除行中更具体的值时对其进行子集化.我尝试过像:
data2<-data.frame(data, na.strings=c("D", "E", "F"))
Run Code Online (Sandbox Code Playgroud)
当然这不起作用,因为我认为na.strings只适用于"读取"包..而不是其他功能.有没有相当于简单地将某些值转换为NA所以我可以相当容易地na.omit(data2)?
谢谢你的帮助.
这是我发现的最近的链接:https://stats.stackexchange.com/questions/5305/how-to-re-sample-an-xts-time-series-in-r
但我没有看到任何关于聚合数据的方法(如平均值,计数,匿名函数),你可以在熊猫中做到这一点.
对于我的程序,我试图让数据帧每2分钟重新采样一次,并取每个间隔的2个值的平均值.谢谢!
我有一个看起来像这样的系列:
delivery
2007-04-26 706 23
2007-04-27 705 10
706 1089
708 83
710 13
712 51
802 4
806 1
812 3
2007-04-29 706 39
708 4
712 1
2007-04-30 705 3
706 1016
707 2
...
2014-11-04 1412 53
1501 1
1502 1
1512 1
2014-11-05 1411 47
1412 1334
1501 40
1502 433
1504 126
1506 100
1508 7
1510 6
1512 51
1604 1
1612 5
Length: 26255, dtype: int64
Run Code Online (Sandbox Code Playgroud)
查询在哪里: df.groupby([df.index.date, 'delivery']).size()
对于每一天,我都需要拉出数量最多的送货号码。我感觉就像是这样:
df.groupby([df.index.date, 'delivery']).size().idxmax(axis=1)
Run Code Online (Sandbox Code Playgroud)
但是,这只是返回我整个数据帧的idxmax。相反,我需要每天的第二级idmax(而不是日期,而是交货号),而不是整个数据框(即,它返回一个向量)。 …
我可以从 pandas 文档中看到你可以去:
df.loc[['a','b','c'],:]
Run Code Online (Sandbox Code Playgroud)
对于时间序列,你为什么不去:
x = df.loc[['2005-10-27 14:30':'2005-10-27 15:15', '2006-04-14 14:40':'2006-04-14 15:20', '2008-01-25 14:30':'2008-01-25 15:30'],:]
Run Code Online (Sandbox Code Playgroud)
我收到语法错误。你不能在时间序列上做多个切片范围吗?有解决方法吗?