在这里填写新手。我确实需要一些帮助来创建一些循环(我正在努力使自己的想法从哪里开始)。我有两个数据集,我需要获取一个单独的客户ID,并将其循环遍历另一个文件中的每一行,然后从第二个文件中每一行的值中减去该客户ID,然后输出一个新的文件,该文件是有效区分客户ID的文件现在,第二个文件中的每一行都将是新文件中的一列,并减去距离。
Data1是我的客户文件,我需要获取每个客户行并将其循环到第二个文件中的每一行,并从data2中减去data1。
Data3是我的输出文件的外观。
不胜感激:-)
data1 <- data.frame("ID" = c(1, 2, 3),
"Var1" = c(377, 649, 592))
ID Var1
1 1 377
2 2 649
3 3 592
data2 <- data.frame("Class" = c("a", "b", "c"),
"Var1" = c(444, 887, 437))
Class Var1
1 a 444
2 b 887
3 c 437
data3 <- data.frame("ID" = c(1, 2, 3),
"a" = c(-67, 205, 148),
"b" = c(-510, -238, -295),
"c" = c(-60, 212, 155))
ID a b c
1 1 -67 -510 -60
2 2 205 -238 212
3 3 148 -295 155
答案 0 :(得分:1)
让我们开始吧。基本循环使用for
命令。
尝试一下以查看它。
for (i in 1:3) {
print(i)
}
i
是我为迭代器组成的变量,其值在每次执行循环时都会更改。变量i
将获得什么值?向量1:3
中的那些,从1到3的整数序列。在循环内部,我打印了迭代器变量。您运行此代码,看到输出,然后了解循环中发生的情况。
现在,您开始填写内容以满足您提出的问题。首先,您说要遍历两个数据集。您的插图假定行是按顺序排列的,并且每个行都使用相同的ID。好吧,首先您将如何引用数据值?
您可以在第一个数据集中引用各个变量的一种方式是这样的。方括号内的数字表示数据框的行和列。
data1[1, 2]
data1[2, 2]
data1[3, 2]
现在,您对在此简单循环中插入什么代码有了一些想法。
最终,对于您描述的任务类型,您将学习如何在键上而不是通过循环来联接数据集。但是,这不是您要的。您说您想了解循环,所以这可以让您快速入门。祝你好运!
答案 1 :(得分:0)
此代码将执行您想要的操作。只需循环遍历文件1中的数据即可;在该循环中,循环遍历文件2中的数据。您可以初始化data.frame并在每次通过外部循环时都添加一行。重要的是要注意在内部循环中使用j+1
将每个计算放入data3
数据框中的适当列中。
此代码显示了使用列号(data3[i,1]
)从数据帧中分割数据的三种方式;使用列名(data1$ID[i]
);并结合使用列名和行号(data1[i, "ID"]
)。
data3 <- data.frame(ID=0, a=0, b=0, c=0)
for (i in 1:nrow(data1)) {
data3[i,1] <- data1$ID[i] # or data1[i,"ID"]
for (j in 1:nrow(data2)) {
data3[i,j+1] <- data1$Var1[i] - data2$Var1[j]
}
}