如何使用R中的(列名称*单元格中的编号)填充数据框中的每个单元格?
下面是数据帧df 我需要用R中的(列名称*单元格中的编号)填充数据框中的每个单元格。 从第2列(比萨饼)开始,即df[1,2] 输入:如何使用R中的(列名称*单元格中的编号)填充数据框中的每个单元格?,r,function,dataframe,R,Function,Dataframe,下面是数据帧df 我需要用R中的(列名称*单元格中的编号)填充数据框中的每个单元格。 从第2列(比萨饼)开始,即df[1,2] 输入: Name pizza coke fries 1 Tom 1 NA NA 2 Dick NA 2 1 3 Harry 3 NA 1 4 Don NA 2 NA 5 John 2 NA 1 预期产出: Name pizza
Name pizza coke fries
1 Tom 1 NA NA
2 Dick NA 2 1
3 Harry 3 NA 1
4 Don NA 2 NA
5 John 2 NA 1
预期产出:
Name pizza coke fries
1 Tom pizza <NA> <NA>
2 Dick <NA> coke coke fries
3 Harry pizza pizza pizza <NA> fries
4 Don <NA> coke coke <NA>
5 John pizza pizza <NA> fries
Name比萨可乐薯条
汤姆比萨饼
2份迪克可乐薯条
3份哈利披萨薯条
4吨可乐
5份约翰披萨薯条
我们可以基于“HCC”列中的非NA元素创建逻辑矩阵
nm1 <- names(df1)[startsWith(names(df1), 'HCC')]
i1 <- !is.na(df1[nm1])
df1[nm1][i1] <- nm1[col(df1[nm1])][i1]
df1
# ID HCC_1 HCC_2 HCC_3
#1 P1 HCC_1 <NA> <NA>
#2 P2 <NA> HCC_2 HCC_3
#3 P3 HCC_1 <NA> HCC_3
#4 P4 <NA> HCC_2 <NA>
#5 P5 HCC_1 <NA> HCC_3
nm1您希望从单元格中的列名称*编号得到什么输出?什么是HCC_1*3
?那么HCC_2*NA呢?请提供预期输出。已编辑:添加了预期输出。有什么问题?@AMC我需要上面输入的输出。@helios9是的,但Stack Overflow是一个关于编程和软件开发的QA网站,不是免费的代码编写服务。明白了。非常感谢。它确实起作用了。我想知道你到底做了什么,非常感谢。那太好了。
nm2 <- names(df2)[-1]
i2 <- !is.na(df2[nm2])
df2[nm2][i2] <- trimws(strrep(paste0(nm2[col(df2[nm2])][i2], " "), df2[nm2][i2]))
df2
# Name pizza coke fries
#1 Tom pizza <NA> <NA>
#2 Dick <NA> coke coke fries
#3 Harry pizza pizza pizza <NA> fries
#4 Don <NA> coke coke <NA>
#5 John pizza pizza <NA> fries
df1 <- structure(list(ID = c("P1", "P2", "P3", "P4", "P5"), HCC_1 = c(1L,
NA, 3L, NA, 6L), HCC_2 = c(NA, 2L, NA, 2L, NA), HCC_3 = c(NA,
1L, 1L, NA, 1L)), class = "data.frame", row.names = c("1", "2",
"3", "4", "5"))
df2 <- structure(list(Name = c("Tom", "Dick", "Harry", "Don", "John"
), pizza = c(1L, NA, 3L, NA, 2L), coke = c(NA, 2L, NA, 2L, NA
), fries = c(NA, 1L, 1L, NA, 1L)), class = "data.frame", row.names = c("1",
"2", "3", "4", "5"))