从数据框中获取唯一ID计数的数量,并为计数和值创建新列

乔纳斯·昂格贝克(JonasUngerbäck)

我有一个数据框重塑/计数问题。考虑以下数据帧,该数据帧具有一列非唯一ID和一个值列(可以是唯一的,但不一定是):

id<-c(1,1,1,2,2,3,4,4,4,4)
value_df<-c("A","B","C","D","E","F","G","H","I","J")
df<-data.frame(id,value_df)

  df
   id value_df
1   1        A
2   1        B
3   1        C
4   2        D
5   2        E
6   3        F
7   4        G
8   4        H
9   4        I
10  4        J

我要做的是创建一个数据帧,其中第一列包含唯一的ID,第二列包含这些ID的计数,其余n列包含每个ID的值,如下所示:

  df_counts_reshape
  id number_id value_df_1 value_df_2 value_df_3 value_df_4
1  1         3          A          B          C          N
2  2         2          D          E         <NA>       <NA>
3  3         1          F         <NA>       <NA>       <NA>
4  4         4          G          I          J          K

使用plyr软件包可以很容易地得出计数,就像这样

count(df,"id")

但后来我的问题开始了。为了获得其余的数据帧,我尝试了通过reshape2-package进行熔化dcast处理

df_melted<-melt(df,id.vars =c("id"), measure.vars = c("value_df"))
df_cast<-dcast(df_melted,id~value)

但是,这将导致以下输出:

   df_cast
  id    A    B    C    D    E    F    G    H    I    J
1  1    A    B    C <NA> <NA> <NA> <NA> <NA> <NA> <NA>
2  2 <NA> <NA> <NA>    D    E <NA> <NA> <NA> <NA> <NA>
3  3 <NA> <NA> <NA> <NA> <NA>    F <NA> <NA> <NA> <NA>
4  4 <NA> <NA> <NA> <NA> <NA> <NA>    G    H    I    J

此输出具有比我想要的更多的“值”列,但是我找不到一种简单的方法可以将其简化为我上面想要的输出。我还认为,获取number_id的最后一步是使用rbind。

不用说,我的实际数据帧包含成千上万的行,这使得当前的熔铸/熔铸输出非常笨拙,具有成千上万的列。

席菲尼

用这个:

df<-data.frame(id,value_df)
df$num <- ave(as.character(df$value_df), df$id, FUN = seq_along)
df = reshape(df,idvar = "id",direction = "wide",timevar = "num" )

结果:

> df
  id value_df.1 value_df.2 value_df.3 value_df.4
1  1          A          B          C       <NA>
4  2          D          E       <NA>       <NA>
6  3          F       <NA>       <NA>       <NA>
7  4          G          H          I          J

它的作用是为每个id组添加一个数字列,其顺序为1:n。然后它将这些值用作新的列名

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

选择并为在2列上具有相同值的唯一ID创建新ID

如何获取列中唯一值的表计数

熊猫,获取数据框列中单个值的计数

熊猫列中唯一值的计数

遍历Panda数据框中的多列并查找计数唯一值

python获取每个键的唯一值计数和键中的唯一值计数

从熊猫数据框中的唯一行值创建新列

要将多列合并为一列并计算唯一值的重复,并为熊猫数据框中的每个计数维护一个单独的列

在pandas数据框中创建一列计数

根据R数据框中的唯一ID获取值变化的计数

列出熊猫数据框中每组的唯一值计数

Python计数组中数据框中的唯一值数量

我将如何创建一个具有aa列的唯一值并对其进行计数的新数据框?

一列中数据框的值计数

用R中另一列的分组值进行计数来创建一个新的数据框

Dplyr 唯一计数和同一数据框中的一般计数

在计数列中添加第二列后如何在数据框中获取唯一行

从熊猫值计数创建新的数据框

如何从某个特定列中的所有唯一值创建新的数据框列?

使用 Pandas 根据数据框中的另一列值获取特定值的计数和总数

提取数据框列中唯一值的数量

如何在pyspark数据框中获取列的唯一值并存储为新列

创建一个包含另一个数据框列中唯一值计数的 R 数据框

具有唯一值和计数的新数据框

在新列中创建具有唯一值的同一数据框的多个副本

Python 数据框 :: 为任一列中的每个唯一值获取两列的计数

使用从单列中的唯一值派生的新列创建数据框

查找数据框中所有列中唯一值的计数,不包括 NA 值 (R)

Python - 如何遍历列中的唯一值,创建数据框并为每个值输出到 csv