附件是我正在尝试创建其他列的示例数据
Part A B C D
abc 100 30 40 50
def 0 23 24 25
ghi 21 23 45 50
我需要创建16列,即a1,a2,a3,a4,b1,b2 ...... d3,d4,a1的值为A / 4,a2 = A / 4 ... d1 = D / 4等等。
我尝试使用for循环条件
for (i in 1:4) {
data$a[i] <- A/4
data$b[I] <- B/4
}
最终数据应该是这样的 具有以下格式的相应值的列名
Part a1 a2 a3 a4 b1 b2 b3 b4...d4
答案 0 :(得分:0)
这是我的解决方案:
x <- read.table(header=TRUE, text=
"Part A B C D
abc 100 30 40 50
def 0 23 24 25
ghi 21 23 45 50")
x4 <- t(apply(D[-1], 1, rep, each=4)/4)
rownames(x4) <- x$Part
colnames(x4) <- paste0(rep(c("a", "b", "c", "d"), each=4), 1:4)
x4
如果您想要数据帧,可以这样做:
x4.df <- cbind(data.frame(Part=x$Part), x4)
答案 1 :(得分:0)
使用for
循环:
df <- data.frame(Part = c("abc","def","ghi"),
A = c(100,0,21),
B = c(30,23,23),
C = c(40,24,45),
D = c(50,25,50))
final_df <- df # Start with copy of original
for (i in 1:4) {
new_df <- (df[,-1])/4 # create data frame with div 4 values
names(new_df) <- paste0(names(df)[-1],i) # create col names
final_df <- data.frame(final_df, new_df)
}
## Part A B C D A1 B1 C1 D1 A2 B2 C2 D2 A3
##1 abc 100 30 40 50 25.00 7.50 10.00 12.50 25.00 7.50 10.00 12.50 25.00
##2 def 0 23 24 25 0.00 5.75 6.00 6.25 0.00 5.75 6.00 6.25 0.00
##3 ghi 21 23 45 50 5.25 5.75 11.25 12.50 5.25 5.75 11.25 12.50 5.25
## B3 C3 D3 A4 B4 C4 D4
##1 7.50 10.00 12.50 25.00 7.50 10.00 12.50
##2 5.75 6.00 6.25 0.00 5.75 6.00 6.25
##3 5.75 11.25 12.50 5.25 5.75 11.25 12.50