我正在玩March Madness的一些数据,我正在尝试在R中创建新的数据帧,将所有“AP”分成一个数据帧,将所有“DUN”分成不同的帧。这是一个巨大的数据集,但这是一个片段,说明我要做什么,我只是无法在R中弄清楚任何帮助将不胜感激。
H,37,AP,662,18
H,37,AP,783,19
H,37,AP,636,20
H,37,AP,671,21
H,37,AP,708,22
H,37,AP,562,23
H,37,AP,675,24
H,37,AP,554,25
H,37,DUN,625,1
H,37,DUN,717,2
H,37,DUN,577,3
H,37,DUN,511,4
H,37,DUN,676,5
如果有人可以告诉我如何使用此功能删除基于某列的某些行(请从第4列删除所有625秒),
点数。
提前致谢。
答案 0 :(得分:0)
您可以使用split()
为每个因素创建数据框列表:
split(df, by = factor(df$AP_or_DUN))
要根据特定值(例如num
)删除特定值,例如i
,您可以使用[
,即进行子集化:
df <- df[df[, i] != num, ]
或者,如果列有名称:
df <- df[df$column_of_values != num, ]
答案 1 :(得分:0)
另一种方法是使用dlply
包中的plyr
。它会在数据框列表中返回您的数据,但如果您想将它们保持在一起,则可能有所帮助。
dat <- colA colB colC colD colE
H 37 AP 675 24
H 37 AP 554 25
H 37 DUN 625 1
H 37 DUN 717 25
dat2 <- dlply(dat, .(colC))
$AP
colA colB colC colD colE
1 H 37 AP 675 24
2 H 37 AP 554 25
$DUN
colA colB colC colD colE
1 H 37 DUN 625 1
2 H 37 DUN 717 2
for (i in 1:length(dat2))
assign(names(dat2)[i], dat2[[i]])