我希望比较数据表中的数据,按照1个规则自动比较列。
在此图片中,我将按对列Ax_y
与Bx_y
进行比较。
A0_0 vs B0_0
A1_1 vs B1_1
...........
我尝试过代码:
foreach(DataRow r in dt.Rows)
{
if (r["A0_0"] == r["B0_0"])
{
// do something
}
}
但这失败了,我想循环所有行并进行比较。但我有大约50列,做这本手册并不是一个好主意。
注意:在这张图片中我绘制了样本列。在真实的数据库中,它会像:
A0_0 B0_0 A0_1 B0_1 A1_0 B1_0 A1_1 B1_1 A2_0 B2_0 A2_1 B2_1
答案 0 :(得分:1)
在行的每次迭代中循环遍历列。如下所示:
library(tidyr)
# gather non-ID columns to long form
df %>% gather(var, val, -id1:-id2) %>%
# split former column names into variable name and time variables
separate(var, c('var', 'time')) %>%
# spread back to wide form
spread(var, val) %>%
head()
## id1 id2 time v1 v2 v3 v4 v5 v6 v7 v8
## 1 1 0.2655087 a 0.2059746 0.8209463 0.3390729 0.23962942 NA 0.57487220 NA NA
## 2 1 0.2655087 b 0.9347052 0.4776196 NA 0.65472393 NA 0.68278808 NA NA
## 3 1 0.2655087 c 0.4820801 0.9128759 0.4346595 0.97617069 0.9918386 0.61464497 NA NA
## 4 1 0.2655087 d NA NA NA NA NA NA NA 0.2847905
## 5 2 0.3721239 a 0.1765568 0.6470602 0.8394404 0.05893438 NA 0.07706438 NA NA
## 6 2 0.3721239 b 0.2121425 0.8612095 NA 0.35319727 NA 0.60154122 NA NA
此处,Inner循环将迭代每行的列,并将foreach (DataRow r in myTableData.Rows)
{
for (int i = 1; i < myTableData.Columns.Count - 1; i+=2)
{
if (r[i] == r[i + 1])
{
// do something;
}
}
}
列数据与ith
进行比较。即。i+1th
时它会比较i=1
。自r["A0_0"] and r["B0_0"]
0th
列