Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 添加新列,其中两列中重复的列数_R_Dataframe - Fatal编程技术网

R 添加新列,其中两列中重复的列数

R 添加新列,其中两列中重复的列数,r,dataframe,R,Dataframe,您好,我有一个数据帧,例如: COL1 COL2 SP1 A SP1 A SP1 B SP2 A SP2 C SP2 D SP3 E SP4 B SP4 B SP4 B 我想把它改为: COL1 Value COL2 SP1 2 A SP1 1 B SP2 1 A SP2 1 C SP2 1 D SP3 1 E SP4 3 B 其中,列值是重复的c'COL1','COL2'的数量 有人对R有想法吗

您好,我有一个数据帧,例如:

COL1 COL2 
SP1  A
SP1  A
SP1  B
SP2  A
SP2  C
SP2  D
SP3  E
SP4  B
SP4  B
SP4  B
我想把它改为:

COL1 Value COL2 
SP1  2     A
SP1  1     B
SP2  1     A
SP2  1     C
SP2  1     D
SP3  1     E
SP4  3     B
其中,列值是重复的c'COL1','COL2'的数量

有人对R有想法吗

以下是示例数据:

structure(list(COL1 = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 
4L, 4L, 4L), .Label = c("SP1", "SP2", "SP3", "SP4"), class = "factor"), 
    COL2 = structure(c(1L, 1L, 2L, 1L, 3L, 4L, 5L, 2L, 2L, 2L
    ), .Label = c("A", "B", "C", "D", "E"), class = "factor")), class = "data.frame", row.names = c(NA, 
-10L))
这可能与交互+表有关:

res 2 SP2 A 1 R> 3 SP1B1 R> 4 SP4 B 3 R> 5 SP2 C 1 R> 6 SP2 D 1 R> 7 SP3 E 1 如果~~在某些因素中,您可以更改sep。通过在交互中添加另一个参数,这扩展到更多的因子变量

您也可以这样使用表:

res COl1 COL2值 R> 1 SP1 A 2 R> 2 SP2 A 1 R> 3 SP1 A 1 R> 4 SP4 B 3 R> 5 SP2 B 1 R> 6 SP2 C 1 R> 7 SP3 D 1 当存在多个因素水平时,前者可能更有效。如果要按显示顺序获取数据,可以使用排序。

这可能与interaction+table有关:

res 2 SP2 A 1 R> 3 SP1B1 R> 4 SP4 B 3 R> 5 SP2 C 1 R> 6 SP2 D 1 R> 7 SP3 E 1 如果~~在某些因素中,您可以更改sep。通过在交互中添加另一个参数,这扩展到更多的因子变量

您也可以这样使用表:

res COl1 COL2值 R> 1 SP1 A 2 R> 2 SP2 A 1 R> 3 SP1 A 1 R> 4 SP4 B 3 R> 5 SP2 B 1 R> 6 SP2 C 1 R> 7 SP3 D 1 当存在多个因素水平时,前者可能更有效。如果要按显示顺序获取数据,可以使用“排序”。

使用和来自:

图书馆弹琴 图书馆三年 你的数据 数据% 汇总值=n 后果 使用和来自:

图书馆弹琴 图书馆三年 你的数据 数据% 汇总值=n 后果 首先使用unique删除任何重复的项。然后使用lappy迭代唯一数据,以计算与原始数据匹配的行数。存储在df1中的示例数据

首先使用unique删除任何重复的项。然后使用lappy迭代唯一数据,以计算与原始数据匹配的行数。存储在df1中的示例数据

使用librarydata.table

使用librarydata.table

使用聚合的基本R选项

使用聚合的基本R选项


是一列还是两列?上一个数据示例中只有一列。对不起,我编辑了DPUTI是一列还是两列?上一个数据示例中只有一列。抱歉,我编辑了DPUT。请注意,这会打印结果,但不会修改data.frame,因为dt仍然返回原始数据。不确定您的观点是@ManotheSharek。如果您想存储答案,只需使用赋值,请注意这会打印结果,但不会修改data.frame,因为dt仍然返回原始数据。不确定您的观点是@manotheshark。如果要存储答案,只需使用赋值
df2 <- unique(df1)
df2$Value <- lapply(seq_len(nrow(df2)),
                    function(x) nrow(df1[df1$COL1 == df2$COL1[x] & df1$COL2 == df2$COL2[x], ]))

> df2
  COL1 COL2 Value
1  SP1    A     2
3  SP1    B     1
4  SP2    A     1
5  SP2    C     1
6  SP2    D     1
7  SP3    E     1
8  SP4    B     3
setDT(dt)
dt[, .(value=.N), .(COL1,COL2)]

#    COL1 COL2 value
# 1:  SP1    A     2
# 2:  SP1    B     1
# 3:  SP2    A     1
# 4:  SP2    C     1
# 5:  SP2    D     1
# 6:  SP3    E     1
# 7:  SP4    B     3
> aggregate(Value ~ ., cbind(df, Value = 1), sum)
  COL1 COL2 Value
1  SP1    A     2
2  SP2    A     1
3  SP1    B     1
4  SP4    B     3
5  SP2    C     1
6  SP2    D     1
7  SP3    E     1