根据 Excel 或 Jamovi 中的另一列 (ID) 复制列内的值

Copy value inside column based on another column (ID) in Excel or Jamovi

我不知道如何让它发挥作用。有些人在 r-forums 上问过类似的问题,但我的理解似乎是进行转移的基础。 我有一个长格式的大型重复测量数据集,我进行了聚类分析。现在,我需要根据 Participant-ID 在第二列中复制值信号组成员资格。 下面的 table 显示了它现在的样子。我需要根据 id.

使用相同的值自动填充 cluster_membership 的空格
ID Cluster_membership
1
1 3
1
2 4
2
3 5
3
ID Cluster_membership that i need
1 3
1 3
1 3
2 4
2 4
3 5
3 5

提前谢谢你, 菲利普

如果您的数据与您显示的一样,每个 ID 只有一个 Cluster_membership,您可以使用 Power Query 获得所需的输出,在 Windows 中可用Excel 2010+ 和 Office 365 Excel

  • Select 你原来的一些单元格 table
  • Data => Get&Transform => From Table/Range
  • 当 PQ UI 打开时,导航至 Home => Advanced Editor
  • 记下代码第 2 行中的 Table 名称。
  • 将现有代码替换为下面的M-Code
  • 将粘贴代码第 2 行中的 table 名称更改为您的“真实”table 名称
  • 检查任何注释,以及 Applied Steps window,以更好地理解算法和步骤

M码

let

//change table name in next line to actual name in your workbook
    Source = Excel.CurrentWorkbook(){[Name="Table11"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}, {"Cluster_membership", Int64.Type}}),

//Group by ID and extract Cluster_membership
    #"Grouped Rows" = Table.Group(#"Changed Type", {"ID"}, {
        {"all", each _, type table [ID=nullable number, Cluster_membership=nullable number]},
        {"Cluster_membership", each List.Max([Cluster_membership])}
        }),

//remove unneeded columns and expand the resultant table (except for the Cluster_membership column
    #"Removed Columns" = Table.RemoveColumns(#"Grouped Rows",{"ID"}),
    #"Expanded all" = Table.ExpandTableColumn(#"Removed Columns", "all", {"ID"}, {"ID"})
in
    #"Expanded all"

注:
获得相同输出的另一种方法是

  • 按 ID 对 table 排序,然后聚类
  • Fill-Up簇列

我不确定哪个在您的数据集上会更快。带排序的代码比较简单,但是在PQ中排序有时需要一段时间。您可以尝试这两种方法。如果你这样做,请告诉我比较结果

M代码(排序方式)

let

//change table name in next line to actual name in your workbook
    Source = Excel.CurrentWorkbook(){[Name="Table11"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}, {"Cluster_membership", Int64.Type}}),

//sort by ID and cluster, then fill-up
    #"Sorted Rows" = Table.Sort(#"Changed Type",{{"ID", Order.Ascending}, {"Cluster_membership", Order.Ascending}}),
    #"Filled Up" = Table.FillUp(#"Sorted Rows",{"Cluster_membership"})
in
    #"Filled Up"