按行拆分R中的数据帧
我有一个这样的长数据帧:按行拆分R中的数据帧,r,R,我有一个这样的长数据帧: Row Conc group 1 2.5 A 2 3.0 A 3 4.6 B 4 5.0 B 5 3.2 C 6 4.2 C 7 5.3 D 8 3.4 D 实际数据有数百行。我想把A分为C和D。我在网上查了一下,找到了几个解决方案,但不适用于我的情况 例如: 案例1: x = data.frame(num =
Row Conc group
1 2.5 A
2 3.0 A
3 4.6 B
4 5.0 B
5 3.2 C
6 4.2 C
7 5.3 D
8 3.4 D
实际数据有数百行。我想把A分为C和D。我在网上查了一下,找到了几个解决方案,但不适用于我的情况
例如:
案例1:
x = data.frame(num = 1:26, let = letters, LET = LETTERS)
set.seed(10)
split(x, sample(rep(1:2, 13)))
我不想被任意数字分割
案例2:按级别/系数划分
data2 <- data[data$sum_points == 2500, ]
data2听起来你想要两个数据帧,其中一个有(A,B,C)
,另一个只有D
。那样的话你可以
Data1 <- subset(Data, group %in% c("A","B","C"))
Data2 <- subset(Data, group=="D")
<代码> DATA1您可以考虑从“Car”包中使用<代码> Read()/Case>函数。
对于那些通过互联网搜索引擎一次又一次来到这里的人,标题中问题的答案是:
x <- data.frame(num = 1:26, let = letters, LET = LETTERS)
split(x, sort(as.numeric(rownames(x))))
x我认为可能split(dat,dat$group=='D')
就足够了。我认为可能是同一件事。它(某种程度上)实现了相同的结果,但更为惯用,只需要一行,并且在单个数据结构中方便地返回两部分。一般来说,应该更喜欢使用split
。它返回两个数据帧的列表,必须使用`data$FALSE
`调用,而不是直接调用数据帧元素。如果要创建两个以上的拆分,则会更加复杂。因此,这取决于你在做什么。如果你能轻松地直接使用这些级别,你并不需要汽车套件。它只节省了levels(dat$group)[levels(dat$group)%in%c(“a”,“B”,“c”)]中输入的少量内容。但是,如何存储这些内容呢?例如,如果我想要一个数据帧是a
然后是B
等等。@Hercislife Uselappy()
# Load the library and make up some sample data
library(car)
set.seed(1)
dat <- data.frame(Row = 1:100,
Conc = runif(100, 0, 10),
group = sample(LETTERS[1:10], 100, replace = TRUE))
recodes <- recode(dat$group,
'c("A", "B", "C") = "one";
c("D", "E", "J") = "two";
c("F", "I") = "three";
c("G", "H") = "four"')
split(dat, recodes)
x <- data.frame(num = 1:26, let = letters, LET = LETTERS)
split(x, sort(as.numeric(rownames(x))))