我有一个数据框,但无法弄清楚如何根据其值对重复列进行分组。如何汇总这些数据,以便我可以将重复列标识为3个不同的组,如下所示: A& C, B& d, E,
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<script src='jquery.min.js'> </script>
<title>Parsing CSV Files</title>
<script>
(function($) {
//$(document).ready(function() {
'use strict';
$.ajax({
url: 'csv_data.csv',
dataType: 'text',
}).done(successFunction);
function successFunction(data) {
var allRows = data.split(/\r?\n|\r/);
var table = '<table>';
for (var singleRow = 0; singleRow < allRows.length; singleRow++) {
if (singleRow === 0) {
table += '<thead>';
table += '<tr>';
} else {
table += '<tr>';
}
var rowCells = allRows[singleRow].split(',');
var a = $('#test').text();
document.getElementById("test").innerHTML = a;
for (var rowCell = 0; rowCell < rowCells.length; rowCell++) {
if (singleRow === 0) {
table += '<th>';
table += rowCells[rowCell];
table += '</th>';
} else if(rowCells[0]==a){
table += '<td>';
table += rowCells[rowCell];
table += '</td>';
}
}
if (singleRow === 0) {
table += '</tr>';
table += '</thead>';
table += '<tbody>';
} else {
table += '</tr>';
}
}
table += '</tbody>';
table += '</table>';
$('body').append(table);
}
// });
})(jQuery);
</script>
</head>
<body>
<pan id="test">2</span>
</body>
答案 0 :(得分:0)
使用t()两次并使用unique():
<ul>
@foreach($resources->sortBy('pivot_order_column') as $resource)
<li><a href="{{ $resource->url }}">{{ $resource->name }}</a></li>
@endforeach
</ul>
答案 1 :(得分:0)
从列中创建字符串(sss
)的笨重但有效的方法,并在此基础上进行比较:
> library(dplyr)
> library(tibble)
> sss <- data.frame(apply(testframe,2,function(x) paste0(x,collapse=",")))
> names(sss) <- c("pattern")
> sss2 <- sss %>% rownames_to_column()
> lapply(unique(sss2$pattern), function(x) sss2$rowname[which(sss2$pattern==x)])
[[1]]
[1] "A" "C"
[[2]]
[1] "B" "D"
[[3]]
[1] "E"
答案 2 :(得分:0)
您可以使用%in%
函数检查data.frame中是否存在具有相同值的列
df <- testframe # just to make a name shorter
df %in% df[1] # df[1] is a data.frame with a single column (not a vector)
TRUE FALSE TRUE FALSE FALSE
因此,这只是一个问题,即如何遍历每列以及如何用其名称替换与列对应的逻辑值。
我这样做是为了获得具有相同值的列名称组:
unique(lapply(seq(df), function(x) names(df)[df %in% df[x]]))
[[1]]
[1] "A" "C"
[[2]]
[1] "B" "D"
[[3]]
[1] "E"
由于性能,值得将列及其值编码为哈希值,然后进行比较。为方便起见,将其包装在函数中:
library(digest)
colTwins <- function(df) {
hash.v <- vapply(df, function(x) digest(x), character(1))
unique(lapply(seq(df), function(z) names(df)[hash.v %in% hash.v[z]]))
}
colTwins(df = df)
[1] "A" "C"
[[2]]
[1] "B" "D"
[[3]]
[1] "E"