根据 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"
我不知道如何让它发挥作用。有些人在 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"