R 如何根据符合特定条件的数据框单元格索引和打印列名
我有一个编码问题,我无法自己解决,所以我非常感谢您的帮助。总而言之,我想创建一个新的列,附加到我的数据框,列出符合特定条件(逐行)的单元格的列名。我已经寻找了很长一段时间的解决方案,但我仍然没有找到适合我的 假设我得到了这样一个数据帧:R 如何根据符合特定条件的数据框单元格索引和打印列名,r,R,我有一个编码问题,我无法自己解决,所以我非常感谢您的帮助。总而言之,我想创建一个新的列,附加到我的数据框,列出符合特定条件(逐行)的单元格的列名。我已经寻找了很长一段时间的解决方案,但我仍然没有找到适合我的 假设我得到了这样一个数据帧: a <- c(90, NA,20) b <- c(NA, 89, 20) d <- as.data.frame(cbind(a,b)) names(d) <- c("house", "cat") | house | cat --|-
a <- c(90, NA,20)
b <- c(NA, 89, 20)
d <- as.data.frame(cbind(a,b))
names(d) <- c("house", "cat")
| house | cat
--|-------|----
1 | 90 | NA
--|-------|----
2 | NA | 89
--|-------|----
3 | 20 | 20
| house | cat | newcol
---|-------|-----|--------
1 | 90 | NA | house
---|-------|-----|--------
2 | NA | 89 | cat
---|-------|-----|--------
3 | 20 | 20 | house, cat
我必须承认,尽管我已经搜索了大约一个星期了,但我很难对单元格和柱状图进行索引。我尝试了for循环,也尝试了使用apply。我已经尝试了我能想到的每一个单括号-双括号版本。我试着把哪个()包括在apply中,我试着。。很多
大多数时候,我处理apply函数中的行,因为据我所知,我希望函数在这些行上循环,最后在每行的末尾写一个新的向量。但这并没有让我一事无成,许多版本中有一个是这样的:
col <- colnames(d)[apply(d, 1, function(x) which(!is.na(x),arr.ind=T))]
col这应该可以
df$newcol <- apply(df,1,function(x) paste(names(df)[!is.na(x)],collapse=", "))
df
house cat newcol
1 90 NA house
2 NA 89 cat
3 20 20 house, cat
df$newcol这应该可以
df$newcol <- apply(df,1,function(x) paste(names(df)[!is.na(x)],collapse=", "))
df
house cat newcol
1 90 NA house
2 NA 89 cat
3 20 20 house, cat
df$newcol也d$newcol谢谢你们两位!第一个解决方案看起来与我的许多尝试中的一个没有太大区别。。。我非常感谢现在能够继续。这是令人沮丧的,虽然,我喜欢解决这个问题,而不必麻烦你。无论如何,非常感谢!另外d$newcol谢谢你们两位!第一个解决方案看起来与我的许多尝试中的一个没有太大区别。。。我非常感谢现在能够继续。这是令人沮丧的,虽然,我喜欢解决这个问题,而不必麻烦你。无论如何,非常感谢!
e <- which(!is.na(d),arr.ind=T)
list <- names(d[e[,2]])
list
[1] "house" "house.1" "cat" "cat.1"
df$newcol <- apply(df,1,function(x) paste(names(df)[!is.na(x)],collapse=", "))
df
house cat newcol
1 90 NA house
2 NA 89 cat
3 20 20 house, cat