在N数或列式减法中需要帮助,下面是输入数据帧中的列。
输入数据框:
A B C D
1 4 6 2
3 3 3 4
1 2 2 2
4 4 4 4
5 2 3 2
预期产出:
A B-A C-B D-C
1 3 2 -4
3 0 0 1
1 1 0 0
4 0 0 0
5 -3 1 -1
同样会有很多列到10个。
我可以编写2列代码:
代码:
df$(B-A) <- df$B - df$A
df$(C-B) <- df$C - df$B
依此类推...但是这应该是循环的,因为有近10到12列。请帮我。
答案 0 :(得分:5)
这是一种执行此操作的矢量化方法,
cbind.data.frame(df[1], df[-1] - df[-ncol(df)])
给出,
A B C D 1 1 3 2 -4 2 3 0 0 1 3 1 1 0 0 4 4 0 0 0 5 5 -3 1 -1
答案 1 :(得分:2)
这是一个指导性/教育学的直截了当的解决方案:
df <- data.frame(A=c(1,3,1,4,5), B=c(4,3,2,4,2), C=c(6,3,2,4,3), D=c(2,4,2,4,2))
df
获取模式:
cbind(df[1], df[2] - df[1], df[3] - df[2], df[4] - df[3]) # solved
现在,在R中使用动态编程来完成(在一般情况下):
cbind(df[1], sapply(1:(ncol(df)-1), function(i) df[i+1] - df[i]))
输出:
A B C D
1 1 3 2 -4
2 3 0 0 1
3 1 1 0 0
4 4 0 0 0
5 5 -3 1 -1
答案 2 :(得分:1)
使用nav ul li label {position: relative;}
.pill-btn-no-item1, .pill-btn-no-item2 {left: auto; right: 20px;}
你也可以试试这个
apply()
输出:
cbind(df[1], t(apply(df, 1, diff)))