【发布时间】:2020-12-02 17:06:21
【问题描述】:
我有一个非常复杂的数据集。但为了简单起见,我将使用这些数据。假设我们有这些数据,一列 X 显示不同范围内的数字,另一列是二进制 0/1。我想将二进制 0/1 的序列扩大 1。这将在原始 X 和二进制列中创建新的更长的列(newX,newbinary)。
X binary
1 1 1
2 3 0
3 5 0
4 6 1
5 8 1
6 10 0
我想在这里展开 X 列并将二进制值放在它旁边。类似的,
newX newbinary
1 1 1
2 2 1
3 3 0
4 4 0
5 5 0
6 6 1
7 7 1
8 8 1
9 9 1
10 10 0
我的尝试是这样的,首先我创建了新的 X 列(扩展了 X)。
newX <- seq(X[1], X[length])
然后,我使用 for 循环遍历 newX,然后将值与 X 进行比较以检查它是否等于或小于该值。如果 newX[i] 不等于 X[i],则放入之前的二进制值,否则放入 binary[i]。
for (i in 1:newX[length])
{
newbinary= ifelse((newX != X)&(between(newX[i], X[i],X[j+1])), lag(binary), binary)
}
但这不起作用,给我这个,
newX newbinary
1 1 1
2 2 NA
3 3 NA
4 4 NA
5 5 NA
6 6 NA
我真的不知道 newX 列(较长的一列)将如何遍历 X(较短的一列)并相应地放置值。
如何在 R 中实现这一点?
【问题讨论】: