0 0 0 1 1 1
0 0 1 2 2 2
0 1 0 1111 1111 1111
0 1 1 2222 2222 2222
1 0 0 3333 3333 3333
1 0 1 4444 4444 4444
1 1 0 5555 5555 5555
1 1 1 6666 6666 6666
. . . . . .
. . . . . .
. . . . . .
0 1 0 1111 1001 1111
0 1 1 2542 2222 2272
1 0 0 3353 3993 3343
1 0 1 4434 4654 4764
以上为数据结构,说明如下:
1. 数据行之间为回车,列之间为table键
2. 一行表示一条独立的信息,其中前三个数字表示分类,(000)(001)(010)...(111)共8类。
3. 所需实现的是每一类数据的数量,并分别求出后三列的平均值。比如(000)类,要求的是总共有多少条数据,第四列、第五列、第六列数据的平均值。
请给为高手指点,应该如何读取,并将结果写入text文本中。谢谢!
0 0 1 2 2 2
0 1 0 1111 1111 1111
0 1 1 2222 2222 2222
1 0 0 3333 3333 3333
1 0 1 4444 4444 4444
1 1 0 5555 5555 5555
1 1 1 6666 6666 6666
. . . . . .
. . . . . .
. . . . . .
0 1 0 1111 1001 1111
0 1 1 2542 2222 2272
1 0 0 3353 3993 3343
1 0 1 4434 4654 4764
以上为数据结构,说明如下:
1. 数据行之间为回车,列之间为table键
2. 一行表示一条独立的信息,其中前三个数字表示分类,(000)(001)(010)...(111)共8类。
3. 所需实现的是每一类数据的数量,并分别求出后三列的平均值。比如(000)类,要求的是总共有多少条数据,第四列、第五列、第六列数据的平均值。
请给为高手指点,应该如何读取,并将结果写入text文本中。谢谢!
业务上面的就你自己来吧
using System;
using System.IO;
class Test
{
public static void Main()
{
string path = @"c:\temp\MyTest.txt"; // This text is added only once to the file.
if (!File.Exists(path))
{
// Create a file to write to.
string[] createText = { "Hello", "And", "Welcome" };
File.WriteAllLines(path, createText);
} // This text is always added, making the file longer over time
// if it is not deleted.
string appendText = "This is extra text" + Environment.NewLine;
File.AppendAllText(path, appendText); // Open the file to read from.
string[] readText = File.ReadAllLines(path);
foreach (string s in readText)
{
Console.WriteLine(s);
}
}
}
Dictionary<string, List<int>> result = new Dictionary<string, List<int>>();
foreach (string line in lines)
{
string[] split = line.Split(new char[]{' '},StringSplitOptions.RemoveEmptyEntries);
string key = string.Format("{0} {1} {2}", split[0], split[1], split[2]);
List<int> valList;
if(!result.TryGetValue(key,out valList))
{
valList = new List<int>();
result[key] = valList;
}
valList.AddRange(new int[] { int.Parse(split[3]), int.Parse(split[4]), int.Parse(split[5]) });
}
List<string> resultLines = new List<string>();
foreach (string key in result.Keys)
{
List<int> valList = result[key];
int average = 0;
foreach (int i in valList)
{
average += i;
}
average /= valList.Count;
resultLines.Add(string.Format("{0} {1}", key, average));
}
File.WriteAllLines(@"c:\result.txt", resultLines.ToArray());
{
//数量及总和
int[, , , , , ,] num = new int[6, 2, 2, 2, 2, 2, 2];
int[, , , , , ,] loss = new int[6, 2, 2, 2, 2, 2, 2];
int[, , , , , ,] disaster = new int[6, 2, 2, 2, 2, 2, 2];
int[, , , , , ,] dath = new int[6, 2, 2, 2, 2, 2, 2];
int[, , , , , ,] injured = new int[6, 2, 2, 2, 2, 2, 2]; //平均值
int[, , , , , ,] loss_average = new int[6, 2, 2, 2, 2, 2, 2];
int[, , , , , ,] disaster_average = new int[6, 2, 2, 2, 2, 2, 2];
int[, , , , , ,] dath_average = new int[6, 2, 2, 2, 2, 2, 2];
int[, , , , , ,] injured_average = new int[6, 2, 2, 2, 2, 2, 2];
// 读取数据并各项求和
System.IO.StreamReader sr = new System.IO.StreamReader(openFileDialog1.FileName);
StreamWriter jieguo = new StreamWriter("e:\\数据分析\\丫丫.txt");
jieguo.WriteLine("用途\t构造\t避难\t消训练\t灭火\t警报\t疏散\t损失\t受灾\t受伤\t死亡\t数量"); while (!sr.EndOfStream)
{
string currentLine = sr.ReadLine();
string[] a = System.Text.RegularExpressions.Regex.Split(currentLine, @"\s+");
for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 2; j++)
{
for (int k = 0; k < 2; k++)
{
for (int l = 0; l < 2; l++)
{
for (int m = 0; m < 2; m++)
{
for (int n = 0; n < 2; n++)
{
for (int p = 0; p < 2; p++)
{
while (Convert.ToInt32(a[0]) == i && Convert.ToInt32(a[1]) == j && Convert.ToInt32(a[2]) == k && Convert.ToInt32(a[3]) == l && Convert.ToInt32(a[4]) == m && Convert.ToInt32(a[5]) == n && Convert.ToInt32(a[6]) == p)
{
num[i, j, k, l, m, n, p]++;
loss[i, j, k, l, m, n, p] += Convert.ToInt32(a[7]);
disaster[i, j, k, l, m, n, p] += Convert.ToInt32(a[8]);
injured[i, j, k, l, m, n, p] += Convert.ToInt32(a[9]);
dath[i, j, k, l, m, n, p] += Convert.ToInt32(a[10]);
} }
} }
} }
}
} }
//计算平均值并写出 for (int i = 0; i < 6; i++)
{
for (int j = 0; j < 2; j++)
{
for (int k = 0; k < 2; k++)
{
for (int l = 0; l < 2; l++)
{
for (int m = 0; m < 2; m++)
{
for (int n = 0; n < 2; n++)
{
for (int p = 0; p < 2; p++)
{
loss_average[i, j, k, l, m, n, p] = loss[i, j, k, l, m, n, p] / num[i, j, k, l, m, n, p];
disaster_average[i, j, k, l, m, n, p] = disaster[i, j, k, l, m, n, p] / num[i, j, k, l, m, n, p];
injured_average[i, j, k, l, m, n, p] = injured[i, j, k, l, m, n, p] / num[i, j, k, l, m, n, p];
dath_average[i, j, k, l, m, n, p] = dath[i, j, k, l, m, n, p] / num[i, j, k, l, m, n, p];
jieguo.WriteLine("[0]\t[1]\t[2]\t[3]\t[4]\t[5]\t[6]\t[7]\t[8]\t[9]\t[10]\t[11]", i, j, k, l, m, n, p, loss_average[i, j, k, l, m, n, p], disaster_average[i, j, k, l, m, n, p], injured_average[i, j, k, l, m, n, p], dath_average[i, j, k, l, m, n, p], dath_average[i, j, k, l, m, n, p], num[i, j, k, l, m, n, p]);
}
} }
} }
}
} jieguo.Close();