在R中的特定列上应用函数
我有一个csv文件 此文件包含以下数据-在R中的特定列上应用函数,r,apply,lapply,R,Apply,Lapply,我有一个csv文件 此文件包含以下数据- category_list,Automotive & Sports,Blanks,Cleantech / Semiconductors,Entertainment,Health,Manufacturing,"News, Search and Messaging",Others,"Social, Finance, Analytics, Advertising" ,0,1,0,0,0,0,0,0,0 3D,0,0,0,0,0,1,0,0,0 3D P
category_list,Automotive & Sports,Blanks,Cleantech / Semiconductors,Entertainment,Health,Manufacturing,"News, Search and Messaging",Others,"Social, Finance, Analytics, Advertising"
,0,1,0,0,0,0,0,0,0
3D,0,0,0,0,0,1,0,0,0
3D Printing,0,0,0,0,0,1,0,0,0
3D Technology,0,0,0,0,0,1,0,0,0
Accounting,0,0,0,0,0,0,0,0,1
Active Lifestyle,0,0,0,0,1,0,0,0,0
Ad Targeting,0,0,0,0,0,0,0,0,1
Advanced Materials,0,0,0,0,0,1,0,0,0
Adventure Travel,1,0,0,0,0,0,0,0,0
将其加载到映射数据帧时
mapping <- read.csv(file="mapping.csv", stringsAsFactors = FALSE,sep=",",check.names=FALSE)
而对于应用(映射[2:10],1,函数(x)(x==“1”))
每行都是这样的
[[2]]
Blanks
8
[[1]] 2
有人能帮忙吗?1)如果a
是问题中apply
的结果,那么只需按它索引列名即可:
mapping$sector_names <- names(mapping)[-1][a]
这使得:
> mapping$sector
[1] "Blanks"
[2] "Manufacturing"
[3] "Manufacturing"
[4] "Manufacturing"
[5] "Social, Finance, Analytics, Advertising"
[6] "Health"
[7] "Social, Finance, Analytics, Advertising"
[8] "Manufacturing"
[9] "Automotive & Sports"
1)如果问题中的a
是apply
的结果,则只需按它为列名编制索引即可:
mapping$sector_names <- names(mapping)[-1][a]
这使得:
> mapping$sector
[1] "Blanks"
[2] "Manufacturing"
[3] "Manufacturing"
[4] "Manufacturing"
[5] "Social, Finance, Analytics, Advertising"
[6] "Health"
[7] "Social, Finance, Analytics, Advertising"
[8] "Manufacturing"
[9] "Automotive & Sports"
您可以使用
dput()
共享数据吗?另外,请尝试以下操作:sapply(1:nrow(dt)、函数(z)return(colnames(dt)[which(dt[z,]==1)])
其中dt
是您的数据。frame
还有另一种方法:因为只有一个值可以是1,所以可以使用sapply(1:nrow(dt)、函数(z)return(colnames(dt)[[dt[z,--1]])
)。这不需要使用哪个
等。您可以使用dput()
来共享数据吗?另外,请尝试以下操作:sapply(1:nrow(dt)、函数(z)return(colnames(dt)[which(dt[z,]==1)])
其中dt
是您的数据。frame
还有另一种方法:因为只有一个值可以是1,所以可以使用sapply(1:nrow(dt)、函数(z)return(colnames(dt)[[dt[z,--1]])
)。这并不需要使用,而等。也许可以给他一个解释,来解决这个对你来说似乎微不足道的问题。而不是“这是解决方案”,同意。但是*他们:)第一个选择肯定是我用的。我还发现收集函数(来自tidyr)可以在这里帮助我…也许可以给他一个解释来解决这个,对你来说,似乎是一个琐碎的问题。而不是“这是解决方案”,同意。但是*他们:)第一个选择肯定是我用的。我还发现收集函数(来自tidyr)可以在这里帮助我。。。
> mapping$sector
[1] "Blanks"
[2] "Manufacturing"
[3] "Manufacturing"
[4] "Manufacturing"
[5] "Social, Finance, Analytics, Advertising"
[6] "Health"
[7] "Social, Finance, Analytics, Advertising"
[8] "Manufacturing"
[9] "Automotive & Sports"