按行拆分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 Use
lappy()
# 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))))